我正在使用谷歌表,并且从未在这里运行过“cron job”。 为了给予应有的信用,我找到了这个非常棒的代码来帮助我访问速度见解api:https://statsravingmad.com/measure/page-speed-insights/
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工作表时,我如何修改它以使其每小时填充一列中的新单元格?我是否修改了此代码,是否需要设置其他功能,还是可以选择将单元格填入列中?
答案 0 :(得分:1)
可以修改此函数以写入Sheet1的C列。以下是它的结束方式,而不是return(score)
(如果将值直接写入电子表格,则无需返回任何内容;不会从电子表格调用该函数,而是从trigger调用)。
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
的值放在其下。