Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 如果长时间不使用,则在输入电子表格之前执行Google表单脚本_Google Apps Script_Google Sheets_Google Forms - Fatal编程技术网

Google apps script 如果长时间不使用,则在输入电子表格之前执行Google表单脚本

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

在提交google表单并将条目提交到电子表格之后,我想进一步为条目添加一个随机的10位代码。我在脚本编辑器中编写了以下脚本:

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)并且工作正常,我正在寻找根本原因,即当数小时内没有提交表单时,需要更长的时间才能将条目输入到电子表格中,无论如何,谢谢!