Google apps script 如果长时间不使用,则在输入电子表格之前执行Google表单脚本
在提交google表单并将条目提交到电子表格之后,我想进一步为条目添加一个随机的10位代码。我在脚本编辑器中编写了以下脚本:Google apps script 如果长时间不使用,则在输入电子表格之前执行Google表单脚本,google-apps-script,google-sheets,google-forms,Google Apps Script,Google Sheets,Google Forms,在提交google表单并将条目提交到电子表格之后,我想进一步为条目添加一个随机的10位代码。我在脚本编辑器中编写了以下脚本: function onFormSubmit(e) { var random = Math.floor((Math.random() * 10000000000)); var lock = LockService.getPublicLock(); lock.waitLock(30000); var sheet = SpreadsheetA
function onFormSubmit(e) {
var random = Math.floor((Math.random() * 10000000000));
var lock = LockService.getPublicLock();
lock.waitLock(30000);
var sheet = SpreadsheetApp.openById('******************************').getSheetByName('testing (Responses)');
var range = sheet.getRange(sheet.getLastRow(),3);
range.setValue(random);
lock.releaseLock();
}
当我提交表单时,这非常有效。但是如果我在几个小时内不使用表单,然后提交表单,这个脚本会在条目进入电子表格之前执行,因此这里的随机代码会替换上一条条目的随机代码。最后,当输入到电子表格中时,这个随机代码的单元格是空的。这很奇怪,因为只有在几个小时内没有提交表单的情况下才会发生这种情况,但如果我很快再次提交,效果会非常好。尝试修改您的表单,如下所示:
var SHEET_ID = '******************************'
function onFormSubmit(e) {
var random = Math.floor((Math.random() * 10000000000));
var sheet = SpreadsheetApp.openById().getSheetByName('testing (Responses)');
var range = sheet.getRange(sheet.getLastRow(),3);
// Iterate throw all the rows
for (var i = 2; i <= sheet.getLastRow(); i++) {
random = Math.floor((Math.random() * 10000000000));
// If the random number is not present, then set one. Otherwise skip
if (sheet.getRange(i, 3).getValue() == "") {
sheet.getRange(i, 3).setValue(random);
}
}
}
var SHEET_ID='***********************************'
函数onFormSubmit(e){
var random=Math.floor((Math.random()*1000000000));
var sheet=SpreadsheetApp.openById().getSheetByName('测试(响应)');
var range=sheet.getRange(sheet.getLastRow(),3);
//迭代并抛出所有行
对于(var i=2;i)您使用lockservice的目的是什么?是的,我已经输入了Utlilities.sleep(5*1000)为了避免这种情况发生,我希望找到导致这种情况的原因。但是谢谢!问题是,由于该条目没有进入电子表格,所以最后一行是前一条条目,因此我不会在最终创建条目时为该条目添加此随机ID。然后,您应该配置脚本,以便在数据已被删除后运行甚至插入到工作表中。作为一个黑客/临时解决方案(不鼓励),您可以运行i的循环是的,我已经插入了实用程序。执行前睡眠(10000)并且工作正常,我正在寻找根本原因,即当数小时内没有提交表单时,需要更长的时间才能将条目输入到电子表格中,无论如何,谢谢!