我有一个包含 URL 列表的电子表格.我正在尝试搜索 URL 是否包含特定类,并根据响应我将在它旁边的单元格中设置 0 或 1.我已经制作了一个脚本并且它达到了目的,但是我遇到了执行超时错误,所以我只想有什么办法可以减少它的执行时间.
I am having a spreadsheet which contains a list of URLs. I am trying to search if an URL contains a particular class or not and based on response I will set 0 or 1 in the cell next to it. I have made a script and it does the purpose but I'm experiencing execution timeout error so just want to is there any way I can reduce it's execution time.
这是代码
function ulrFetch(){ var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1'); var class = ss.getRange(1, 5).getValue(); var lr = ss.getLastRow(); var urlList = ss.getRange(3, 8, lr-1).getValues(); var length = urlList.length for (var i = 0;i<length;i++){ var url = urlList[i]; var response = UrlFetchApp.fetch(url.toString()); var result = response.getContentText(); var index = result.indexOf(class); if (index > -1){ ss.getRange(i+3, 5).setValue('1'); } else { ss.getRange(i+3, 5).setValue('0'); } } }提前致谢!!
推荐答案这个修改怎么样?我认为 fetchAll() 可以使用 720 个请求.所以我想建议使用 fetchAll().修改后的脚本流程如下.
How about this modification? I thought that 720 requests might be able to be used by fetchAll(). So I would like to propose to use fetchAll(). The flow of this modified script is as follows.
修改后的脚本:
请修改如下.
var urlList = ss.getRange(3, 8, lr-1).getValues();到 :
var urlList = ss.getRange(3, 8, lr - 1 - 1).getValues();通过此修改,可以检索从第 3 行到最后一行的值.
By this modification, the values from row 3 to last row can be retrieved.
和
for (var i = 0;i<length;i++){ var url = urlList[i]; var response = UrlFetchApp.fetch(url.toString()); var result = response.getContentText(); var index = result.indexOf(class); if (index > -1){ ss.getRange(i+3, 5).setValue('1'); } else { ss.getRange(i+3, 5).setValue('0'); } }到 :
var requests = urlList.map(function(e) {return {url: e[0]}}); var res = UrlFetchApp.fetchAll(requests); var values = res.map(function(e) {return e.getContentText().indexOf(class) > -1 ? ["1"] : ["0"]}); ss.getRange(3, 5, values.length, 1).setValues(values);注意:
- 如果由于 fetchAll() 的限制而发生错误,请告诉我.我想修改脚本.
- fetchAll()
如果我误解了你的问题,我很抱歉.
If I misunderstand your question, I'm sorry.