0

私はガスを使用してPingdomのからのAPIデータを抽出しているが、私は抽出することができたデータのみでした。..抽出PingdomののAPIデータ

TestID | TestName | ResponseTime | Status 
1299405  Google   243   up 
1299434  Yahoo   342   up 
1299499  Bling   299   up 

このスクリプトを使用して..

function pingdom() { 

var headers = 
{ 
    "Accept": "application/json", 
    "Authorization": "Basic xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 
    "App-Key": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 
    "Account-Email": "xxxxxxxxxxxxxxxxxxxxxxxxxxx" 
} 
var options = 
{ 
    "headers" : headers, 
    "method" : "get" 
} 

var response = UrlFetchApp.fetch("https://api.pingdom.com/api/2.0/checks", options); 
var response_json = JSON.parse(response.getContentText()); 

var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getSheetByName("Sheet1"); 


var rows = [], data; 

for (i = 0; i < response_json.checks["length"]; i++) { 
    data = response_json.checks[i]; 
    rows.push([data.id, data.name, data.lastresponsetime, data.status]); 
} 

//Set column headings 
var colHeaders = [[ "Test ID", "Test Name", "Response Time", "Status"]]; 
dataRange = sheet.getRange(1, 1, 1, 4); 
dataRange.setValues(colHeaders) ; 

//Display data 
dataRange = sheet.getRange(2, 1, rows.length, 4); 
dataRange.setValues(rows); 
} 

は、今私は、「平均応答時間&稼働時間」残念ながらPingdomのAPIは、単一のテストIDのデータを抽出するために私を可能にするようないくつかのより多くのデータを抽出しようとしています(テストIDは、APIのURLで指定されるhttps://api.pingdom.com/api/2.0/summary.performance/1299405?includeuptime=true

このGoogleのスクリプトを使用して

...私は、シート1に、すべてのテストIDの存在の「平均応答時間&稼働時間」を取得するよう

function uptime() { 
var headers = 
{ 
    "Accept": "application/json", 
    "Authorization": "Basic xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 
    "App-Key": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 
    "Account-Email": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 
} 
var options = 
{ 
    "headers" : headers, 
    "method" : "get" 
} 

var rows = [] , sum = {}; 
var response = UrlFetchApp.fetch("https://api.pingdom.com/api/2.0/summary.performance/1299405?includeuptime=true", options); 
var response_json = JSON.parse(response.getContentText()); 
//var sum = response_json.summary.states; 
for (i = 0; i < response_json.summary.hours.length; i++) 
{ 
    sum = response_json.summary.hours[i] ; 
rows.push([sum["avgresponse"],sum["uptime"]]); 
break; 
} 
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getSheetByName("Sheet2"); 
dataRange = sheet.getRange(1, 1, 1, 2); 

    //Set column headings 
var colHeaders = [[ "avg","uptime"]]; 
dataRange.setValues(colHeaders) ; 

//Display data 
dataRange = sheet.getRange(2, 1, rows.length, 2); 
dataRange.setValues(rows); 


} 

は私がシート1からのテストIDを拾ってループを作成してみました。

data_id = response_json.checks[i]; 
    //for (i = response_json.checks.id; i++){ 
     var response1 = UrlFetchApp.fetch("https://api.pingdom.com/api/2.0/summary.performance/" + data_id.id, options); 

しかし残念ながら、私はすべてのデータを取得することはできませんよ。誰かが私にこれを達成するのを手伝ってもらえると本当に役に立ちます。

(ここではPingdomのAPIのドキュメントである - https://www.pingdom.com/resources/api)は

答えて

0

あなたはそれらを介して、あなたのチェックやループの配列を作成することによってこれを行うことができます。私のシートはこのIDをたくさん使っています。私がしたことは、私のチェックがすべて入っているシートを作成して、それを全面的に使用することでした。だから私のcheckIDシートは次のようになります。

CheckName     | CheckID 
someendpoint.com/api   456213 
someotherendpoint.com/api 456213 

...など

その後、関数を作成し、シートからこれらの値をつかむことができます。シートから取得して配列に入れる方法の例を次に示します。

var datetimeArr = new Array(); 
var ids = new Array(); 
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var s2 = ss.getSheetByName('checkID'); 
var names = s2.getRange('a1:a').getValues(); 
var ids = s2.getRange('b1:b').getValues();