【问题标题】:setValue not working in some Google app scriptssetValue 在某些 Google 应用脚本中不起作用
【发布时间】:2018-06-14 13:50:17
【问题描述】:

我有几个用于填充 Google 表格的 Google 表单。

在大多数情况下,此行按预期工作,在表单提交时触发:

sheet.getRange(lastRow, getColIndexByName("Status")).setValue("New");

在一个项目中没有,没有设置值,但是在查看执行记录时,有一行说明:

[18-06-12 05:58:08:572 PDT] Range.setValue([New]) [0.122 seconds]

我检查了文本颜色与背景不同。

我尝试将这段代码单独隔离在一个函数中。

在为表单生成新工作表后,它工作了一小会儿。

我错过了什么?

【问题讨论】:

  • 我建议将参数getColIndexByName("Status") 更改为硬编码数字,并对其进行测试。此外,删除并重新安装“提交表单”触发器。
  • 好吧,桑迪,更改为硬编码的列号有效。不知道为什么它在一个实例中起作用,而不是在另一个实例中起作用。感谢您的帮助。
  • getColIndexByName("Status") 正在返回一些意想不到的东西。您可能需要将该代码分开,并测试错误值。
  • 现在硬编码行不工作了.....执行日志说它完成了.....
  • 如果代码可以正常工作,但现在在您没有更改任何内容的情况下无法正常工作,那么这不太可能是您的代码错误。如果代码正在运行,它就不能成为触发器。但除了这两件事之外,我不知道还有什么问题。您可能想查看您的 Apps 脚本仪表板,看看是否有任何错误。在脚本编辑器中,右键单击左上角的 Apps 脚本图标,然后选择“在另一个选项卡中打开”。这将打开 Apps 脚本仪表板。

标签: google-apps-script google-sheets


【解决方案1】:

我见过here 函数getColIndexByName(sheet, colName)。我不知道这个文档是否完美,但请尝试一次。

此函数有 2 个参数:Sheet 和 colName。所以你错过了第一个论点 sheet.

我看到您想在最后一行设置值。但请记住,函数getColIndexByName 将在第一行搜索单词。

【讨论】:

  • 我使用的函数只有一个。
  • function getColIndexByName(colName) { var sheet = SpreadsheetApp.getActiveSheet(); var numColumns = sheet.getLastColumn(); var row = sheet.getRange(1, 1, 1, numColumns).getValues(); for (i in row[0]) { var name = row[0][i]; if (name == colName) { return parseInt(i) + 1; } } return -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
相关资源
最近更新 更多