使用Google表格,如何每小时运行脚本并在列中填充每个单元格



我正在使用Google表,并且从未在这里运行" Cron Job"。要在到期的地方给予信用,我找到了这个很棒的代码,可以帮助我访问Speed Insights API:https://statsravingmad.com/measure/page-speed-ingights/

function speed(url,device,filter_third_party_resources,http_secure) {
  url = url || 'www.statsravingmad.com'; 
  strategy = 'desktop' || device; 
  filter_third_party_resources = 'true' || filter_third_party_resources;
  http_secure = 'false' || http_secure ; 
  switch (http_secure)  {
    case 'false':
    http_protocol = 'http://';
    break;
    case 'true':
    http_protocol = 'https://';
    break;
 }
  var key = 'api-key';  
  var api = 'https://www.googleapis.com/pagespeedonline/v2/runPagespeed?url=' + http_protocol + url
  + '&filter_third_party_resources=' + filter_third_party_resources + 
'&strategy=' + strategy + '&key=' + key;
  var response = UrlFetchApp.fetch(api, {muteHttpExceptions: true });
  var result = JSON.parse(response.getContentText());    
    score = result.ruleGroups.SPEED.score;
    return(score);
}

所以我将此代码在一个函数中,该函数每小时都会在我的Google表中为我的特定测试网站触发。

但是,数据仅填充一个每个站点一个单元格,该公式被分配给。

使用Google表格时,如何修改它以使其每小时填充新单元格?我是否修改了此代码,我必须设置另一个功能,还是有一个选项将单元格填充列?

可以将此功能修改为将其写入Sheep1的C列。这是结束的方式,而不是return(score)(如果将值直接写入电子表格,则无需返回任何内容;将不会从电子表格中调用该函数,而是从触发器中调用)。

  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
  var values = sheet.getRange("C:C").getValues();  // using column C
  var lastRow = 1;
  for (var i = 0; i < values.length; i++) {
    if (values[i][0] != "") {
      lastRow = i + 1;
    }
  }
  sheet.getRange(lastRow + 1, 3).setValue(score);  // column = 3 because C

这里的循环在C列中找到了具有数据的最后一行,并且score的值放在其下方。

最新更新