Google脚本编辑器 - 用于持续监控列

时间:2017-06-30 17:18:12

标签: javascript google-sheets

在此先感谢您的帮助,我已经在这方面工作了很长时间,但没有取得任何实际成果。

我使用TypeForm(https://www.typeform.com/)来接收调查问卷的答案。我在提交表单时使用Zapier(zapier.com)在Go​​ogle工作表文档中将响应输入为一行。

问题是,一旦提交数据,我需要填写几个空列。例如,客户编号以及订单日期。

我无法正常工作,因为OnEdit功能仅适用于手动编辑。我也在考虑使用OnOpen,但可以让它工作。

我希望的是一个连续运行的脚本,用于检查列中的单元格是否包含数据,如果是,则在同一行但不同的列中输入日期(MM dd YYYY) )然后在同一行的另一个单元格中将是客户ID。将通过在该日期顺序添加数字来生成客户ID。例如。如果是今天的日期,则客户ID为063020170001(填充有3个额外数字)。在同一天进入的下一个表格将063020170002作为客户ID。然后,第二天,当表单进入时,客户ID将随着日期而变化,序列将重新开始,070120170001。最后,一旦日期输入到单元格中,我不想允许它写完后,基本上不会让脚本在写入该单元后查看该单元格。

如果您对如何创建此脚本或甚至采取何种方向有任何建议,我们将不胜感激。

谢谢,

1 个答案:

答案 0 :(得分:0)

这里有一个简单的示例作为您的起点。您可能会有不同的数据,因此您必须更改某些列索引,电子表格ID和工作表名称。您还必须将其连接到基于时间的触发器,您可以从编辑/当前项目触发器中的脚本编辑器执行此操作。

function checkFormResponses()
{
  var ss=SpreadsheetApp.openById('SSID');//add spreadsheet id
  var sh=ss.getSheetByName('SHEETNAME');
  var rg=sh.getDataRange();
  var rgA=rg.getValues();
  for(var i=0;i<rgA.length;i++)
  {
    if(!rgA[i][4])//COLUMN INDEXES WILL PROBABLY NEED CHANGING
    {
      rgA[i][4]=Utilities.formatDate(new Date(), 'GMT-6', 'd/M/yyyy HH:mm:ss');
      rgA[i][5]=Utilities.formatDate(new Date(), 'GMT-6', "MMddyyyy") + paddingLeft(String(i),"0",4);

    }
   }
   rg.setValues(rgA);
}

function paddingLeft(padded,padding,length)
{
  var s=padded;
  for(var i=0;s.length<length;i++)
  {
    s= padding + s;
  }
  return s;
}

我的电子表格看起来像这样。

enter image description here

填写后:

enter image description here