【问题标题】:Google Sheets Script: IF Column A is filled, THEN write in Column E谷歌表格脚本:如果 A 列已填满,则在 E 列中写入
【发布时间】:2018-03-23 01:14:27
【问题描述】:

我有一个将条目插入 Google 表格的网络表单,因此我无法在表格的单元格中放置公式,否则表单将跳过该行。我当前的脚本

function fillInTheBlank(e) 
{
  var row=e.range.getRow();  
  e.range.getSheet().getRange(row,5).setFormula('=IF(ISBLANK(A'+ row 
+',1)),"","ready")');
}

IF 列 A 为空白忽略,ELSE 填写“就绪”。

【问题讨论】:

  • 请注意,您可以简单地从Range 转换为.offset,而无需返回工作表并再次调用getRange
  • @I'-'我只不过是调用 getSheets 然后 getRange 而已

标签: google-apps-script google-sheets google-spreadsheet-api


【解决方案1】:

你已经很接近了,只需要在设置之前检查代码中的值:

function onEdit(e) {
  var col = e.range.getColumn();
  // check Ax for any truthy value
  if (e.range.offset(0, 1 - col).getValue()) {
    e.range.offset(0, 5 - col, 1, 1).setValue("ready");
  }
}

请注意,上面不需要触发器,因为它符合简单触发器onEdit 的条件。

如果您的意图是绑定到 on form submit 触发器,则需要将其命名为其他名称(例如 function addStatus(e)),并为其安装触发器。请注意,通常,A 列具有提交的时间戳,因此您不需要检查它的值。相反,如果您的目标只是在刚刚添加的表单旁边的列中添加“就绪”:

function addReady(e) {
  var numQs = e.range.getNumColumns();
  e.range.offset(0, numQs, 1, 1).setValue("ready");
}

范围偏移总是相对于左上角的单元格,因此偏移问题的数量并将选择减少到单行和单列会为我们提供与问题相邻的同一行中的单元格。

【讨论】:

  • 这在 onEdit 中可以正常工作,但在 web 表单发布到工作表时不能正常工作(应该是函数 doPost 吗?)
  • @brandonthebuck 当您说webform 时,请明确表示:您是在谈论 Google 表单,其响应目标是相关电子表格;向script.google.com/macro..... URL 发送 HTTP 请求的网站(随后解释响应并将条目添加到给定工作表);还是使用 Sheets REST API 进行身份验证以直接操作您的电子表格的网站?
  • REST API 使用 POST。目前正在通过 doPost 应用这些条目。
  • @brandonthebuck 您需要编辑原始问题以更具体。您可以控制提交表单吗?您可以控制doPost 方法吗?如果您这样做,我建议修改输入响应以包含“就绪”值,因为这样您以后就不必费心添加它了。我还质疑您使用此“就绪”值的目的,因为您可以仅引用任何必需答案的存在来确定响应是否在该行中。
猜你喜欢
  • 2021-07-07
  • 1970-01-01
  • 1970-01-01
  • 2021-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多