首页 > 解决方案 > 如何将数据从 Jenkins API 提取到 Google Sheet

问题描述

我想使用 Google Sheet Script 通过 Jenkins API 检索数据并将其存储在 Google Sheet

1) 使用 Jenkins API 将 Jenkins Job Builds 拉到 Google Sheet -完成
2) 将数据存储到 Google Sheet ???

(只需要“builds.subBuilds.buildNumber”和“builds.subBuilds.duration”值)
(需要纠正脚本中的错误)

    function getJenkinsBuilds() {

    // get the jenkins job

      var response = UrlFetchApp.fetch('http://jenkins.[domain].co/job/Build+Deploy/api/json', {
        'method': 'get',
        'muteHttpExceptions' : true,
        'headers' : {'Authorization' : 'Basic [tokan]'},
      });

      // parse the json reply and return builds

      var data = JSON.parse(response);
      var builds = data["builds"];
      Logger.log(builds);
      return builds;
      };

      // store predefined parameters from builds in the spreadsheet

   function setDataToTable() {
        var ss = SpreadsheetApp.getActiveSpreadsheet();
        var sheet = ss.getSheetByName('Jenkins');
        var cell = sheet.getRange("A1");

        var rows = [['buildNumber','duration'],['','']];      // I GUESS THE MISTAKE IS HERE?

        sheet.getRange(cell.getRow(), cell.getColumn(), rows.length, rows[0].length).setValues(rows);
   }

实际结果:

Log shows retrieved array with Builds objects, i.e.:  

[19-10-10 16:18:16:937 AEDT] [{number=2081, subBuilds=[{jobName=...  

'Jenkins' spreadsheet is empty.

预期结果:

Store "builds.subBuilds.buildNumber" and "builds.subBuilds.duration" values  
in the Google Sheet ('Jenkins' spreadsheet), i.e.:  

buildNumber duration
123         15sec
456         16sec
...         ...

标签: apijenkinsgoogle-apps-scriptgoogle-sheets

解决方案


我能够使其以以下方式工作:

function getJenkinsBuilds() 
{

      // get jenkins builds
      var response = UrlFetchApp.fetch('http://jenkins.[domain].co/job/Build+Deploy/api/json', {
      'method': 'get',
      'muteHttpExceptions' : true,
      'headers' : {'Authorization' : 'Basic [token]'}
      });

      // parse the json reply
      var data = JSON.parse(response);
      var builds = data["builds"];
      var number = data['builds'][0]['number'];
      var url = data['builds'][0]['url'];
      Logger.log(number);
      Logger.log(url);

      // fill in the spreadsheet with data
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sheet = ss.getSheetByName('Jenkins');
      var cell = sheet.getRange('A1');
      var rows = [['BUILD']];

              for (var i = 0; i < builds.length; i++)
              {
              var number = data['builds'][i]['number'];
              var url = data['builds'][i]['url'];
              rows.push(['=HYPERLINK("'+url+'","'+number+'")']);
              Logger.log(number);
              Logger.log(url);
              sheet.getRange(cell.getRow(), cell.getColumn(), rows.length, rows[0].length).setValues(rows);
              }
};


推荐阅读