【问题标题】:Google Sheet Script not fully executingGoogle Sheet 脚本未完全执行
【发布时间】:2020-08-27 13:47:10
【问题描述】:

我正在使用 Google 表单来触发此脚本。
当我使用“播放”按钮运行脚本时,它运行良好。
当我让 onsubmit 触发器运行它时,复选框会很好地填充,但 setValue 日期不会。
我也尝试过使用setFormula,但得到了相同的结果。

function AddCheckBox_toSchoolLunchForm(F) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Form Responses 1")
  var criteria = SpreadsheetApp.DataValidationCriteria.CHECKBOX;
  var rule = SpreadsheetApp.newDataValidation().requireCheckbox().build();
  var range = sheet.getRange(sheet.getLastRow(), 8);
  range.clearContent();
  range.setDataValidation(rule);
  var FormulaCell = sheet.getRange(sheet.getLastRow(), 10);
  FormulaCell.setFormula("=DATEVALUE(A" + (sheet.getLastRow()) + ")");
}

最终目标是让 J 列在每次提交表单时使用 A 列中的镜头格式化日期填充。
我需要这种格式才能在另一张纸上运行 countIfs。

另一种选择是以某种方式将格式标记嵌入到此 CountIfs 命令中,以便它们匹配。

=COUNTIFS('Form Responses 1'!J:J,A2,'Form Responses 1'!D:D,B2)

【问题讨论】:

    标签: google-apps-script google-sheets triggers google-forms


    【解决方案1】:

    更新答案

    如果在没有触发器的情况下按预期工作时在触发器上运行函数时遇到问题,请检查以下内容:

    • 对于繁重的文件/表单数据,它们可能会延迟使用新表单数据填充工作表。

      • 为避免冲突,请在检索 sheet.getLastRow() 或访问工作表中的数据之前给电子表格一些时间来填充新行。

      • 你可以很容易地打点,例如与Utilities.sleep()

    • 检查您的触发器是否已正确安装。为此检查

      • 触发器类型正确
      • 触发器绑定到正确的函数
      • 通过在重命名函数时创建新触发器来避免冲突。
    • 检查问题不是由于触发restrictions

    • 这是使用简单触发器时常见的错误来源。

    • 检查触发器在其授权下运行的帐户是否有权编辑工作表/范围。这对于检查触发器所有者何时与手动运行脚本的人不同非常重要。

    • 请注意,对于setFormula(),不必将= 合并到公式中

    • 请注意,DATEVALUE() 只会在单元格正确格式化为日期时返回预期结果

    【讨论】:

    • 我尝试在两个地方添加睡眠,但没有成功。目前我是唯一一个在测试情况下使用它的人。
    • 您介意共享您的电子表格以进行故障排除吗?如果没有机密信息,也可能是表格。
    • 感谢您提供帮助
    猜你喜欢
    • 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
    相关资源
    最近更新 更多