gpt4 book ai didi

google-apps-script - Google Apps 脚本 setValues() 问题 : timing out intermittently

转载 作者:行者123 更新时间:2023-12-04 11:08:30 25 4
gpt4 key购买 nike

我有一个已经运行 4 年没有问题的 Google Apps 脚本。但是,自从 3 周以来,我遇到了这个问题:脚本运行了很长时间并且失败了。这种情况每 10 次运行中就有 3 次发生。错误消息是“服务电子表格在访问具有 id [电子表格 ID 此处] 的电子表格时超时”。
实际的脚本是精心制作的(数千行)并在数百个电子表格上运行,使用 fetchUrl() 获取数据。并用 setValues() 填充工作表.这个实际的脚本过去可以在 10 张工作表的电子表格上正常工作,并且可以在过去 4 年中毫无问题地更新每张工作表中的 180k 单元格。现在,我什至无法更新一张纸。
下面的脚本复制了这个问题:它使用 .getValues() 将 1300 行 x 140 列从 Sheet1 复制到 Sheet2。和 .setValues() . 当行数增加到 800 以上时,脚本开始失败。当它运行良好时,执行日志显示它需要 8 秒。当它失败时,日志会显示长达 900 秒的运行时间。在此期间,您无法访问电子表格超过 10 分钟,如果您尝试在不同的选项卡中加载电子表格,它根本不会加载。
我已经向 Google 支持提出了一个问题,我没有时间表,但对给您带来的不便深表歉意。这发生在我尝试过脚本的所有域上,不仅是我的域。您需要尝试运行脚本 10 次才能查看失败情况。
如果有人可以提出解决方法或提供有关此问题的一些见解,我将不胜感激。
这是复制该问题的电子表格的链接:https://docs.google.com/spreadsheets/d/1jea15rtjv85YIZumABMfFKESb2_QmX0-7zC-KchWeDc/edit?usp=sharing

function myFunction() {
var row1 = 1;
var col1 = 1;
var row2 = 1300;
var col2 = 140;
console.log({numrows:row2, numcols:col2} );
var rng = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1").getRange(row1,col1,row2,col2);
var values_to_set = rng.getValues();
var rng2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2").getRange(row1,col1,row2,col2);
rng2.setValues(values_to_set);
console.log('done');

}

最佳答案

根据这个comparison of read/write methods , 使用 advanced services写入比 setValues() 快。
使用原始代码段的以下修改版本适用于您的示例电子表格:

function myFunction() {
var row1 = 1;
var col1 = 1;
var row2 = 1300;
var col2 = 140;
Logger.log({numrows:row2, numcols:col2} );
var rng = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1").getRange(row1,col1,row2,col2);
var values_to_set = rng.getValues();
var rng2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2").getRange(row1,col1,row2,col2);
//rng2.setValues(values_to_set);
// Based on https://developers.google.com/apps-script/advanced/sheets
var request = {
'valueInputOption': 'USER_ENTERED',
'data': [
{
'range': 'Sheet2!' + rng2.getA1Notation(),
'majorDimension': 'ROWS',
'values': values_to_set
}
]
};
Sheets.Spreadsheets.Values.batchUpdate(request, SpreadsheetApp.getActiveSpreadsheet().getId());
Logger.log('done');
}

关于google-apps-script - Google Apps 脚本 setValues() 问题 : timing out intermittently,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64977032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com