【发布时间】:2025-12-21 08:35:09
【问题描述】:
我已经使用 GAS 从 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 只允许我提取单个 testID 的数据(TestID 将在 API URL https://api.pingdom.com/api/2.0/summary.performance/1299405?includeuptime=true 中给出)
通过使用这个谷歌脚本...
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);
}
我尝试从 sheet1 中提取 TestID 并创建一个循环,以便获得 sheet1 中所有 testID 的“平均响应时间和正常运行时间”。
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)
【问题讨论】:
标签: api google-apps-script google-sheets google-spreadsheet-api