【问题标题】:Google Apps Script - Set Values randomly failingGoogle Apps 脚本 - 设置值随机失败
【发布时间】:2022-12-01 07:26:46
【问题描述】:

2016 年的堆栈溢出有人报告说这个问题只发生在调试模式下,但这不是调试模式,它发生在我在后端和调试模式下运行的实时代码(从 webapp 运行)中。

令人沮丧的是,这并不是对 setValues 的每次调用。有一个对 setvalues 的数组调用在脚本的较高位置确实有效(写入电子表格)。

这段代码已经一个多月没有修改,并且至少在 10-26 之前一直有效(第一次失败报告 11-2)。

这是一个小例子:

function setValuesIsFailing(sheet, array, row, column){
//newIDR_SHEET.getRange(3, 9, formulaColumns.length, 2).setValues(formulaColumns);//old command this function replaces

const targetRange = sheet.getRange(row,column,array.length,array[0].length);
console.log(139,targetRange.getA1Notation());
sheet.getRange("C5").setValue("UGH");
targetRange.setValues(array);
console.log(sheet.getRange("C5").getValue());
}

此代码的结果是预期的控制台日志:

10:46:10 AM Info    139 'I3:J49'
10:46:11 AM Error   
Exception: Service Spreadsheets failed while accessing document with id 12shsTE-Mxxx

setValuesIsFailing  @ Code.gs:143

所以第 139 行暗示它确实有它正在写入的工作表然后它 当被告知写入这两个位置时不会抛出错误(但它会 没有成功地写信给他们)然后当被问到时它会抛出一个错误 从其中一个位置读取。

回顾一下:

  • 代码工作正常。一个月没有修改,并且那个月的大部分时间都在正常工作。
  • setValue / setValues 命令静静地失败而没有抛出错误(没有任何内容写入目标)
  • 尝试从本应由脚本修改但未修改的地方读取时,稍后会出现服务电子表格错误
  • 将问题移至新功能显然无法解决问题。

我尝试过的其他事情,记录工作表名称,将新变量重新分配给工作表(最初担心函数以某种方式丢失工作表但调试显示情况并非如此),将失败的代码段移动到新函数中更容易记录,等待问题自行解决。

有任何想法吗?

=====

解决了: 事实证明,奇怪的行为是由于尝试对工作表应用数据验证失败而引起的。

其他人不太可能有这种行为,但我一次从工作表中拉出我的数据验证一列。

它要么接受数据验证设置命令可接受的一列二维数组,要么自动展平数组,因为它只有一列。这已经改变了。使用 .flat() 手动展平我的列数据解决了这个问题。我真的希望错误的验证设置调用会引发错误。

【问题讨论】:

  • 如果您找到问题的答案,请随时将其作为答案分享,以便遇到相同问题的其他社区成员可以看到您是如何解决问题的。
  • 当您有空时,请提供答案并尽可能选中复选框。如果其他人遇到问题,这可能会有所帮助。谢谢。

标签: google-apps-script


【解决方案1】:

我发现错误的验证应用程序导致电子表格基本上无法更新。

它正在读取一个二维数组(一列)并将其用作验证列表。当我展平验证列表时,它起作用了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多