在此先感谢您的帮助,我已经在这方面工作了很长时间,但没有取得任何实际成果。
我使用TypeForm(https://www.typeform.com/)来接收调查问卷的答案。我在提交表单时使用Zapier(zapier.com)在Google工作表文档中将响应输入为一行。
问题是,一旦提交数据,我需要填写几个空列。例如,客户编号以及订单日期。
我无法正常工作,因为OnEdit功能仅适用于手动编辑。我也在考虑使用OnOpen,但可以让它工作。
我希望的是一个连续运行的脚本,用于检查列中的单元格是否包含数据,如果是,则在同一行但不同的列中输入日期(MM dd YYYY) )然后在同一行的另一个单元格中将是客户ID。将通过在该日期顺序添加数字来生成客户ID。例如。如果是今天的日期,则客户ID为063020170001(填充有3个额外数字)。在同一天进入的下一个表格将063020170002作为客户ID。然后,第二天,当表单进入时,客户ID将随着日期而变化,序列将重新开始,070120170001。最后,一旦日期输入到单元格中,我不想允许它写完后,基本上不会让脚本在写入该单元后查看该单元格。
如果您对如何创建此脚本或甚至采取何种方向有任何建议,我们将不胜感激。
谢谢,
答案 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;
}
我的电子表格看起来像这样。
填写后: