创建新文件夹时,如何使Google脚本触发器自动触发(手动工作)

时间:2019-06-11 22:17:59

标签: javascript google-apps-script triggers

我创建了一个脚本,每次提交表单时都会创建一个新文件夹。该脚本的目的是将每个新创建的文件夹放在一个特定的父文件夹中,该文件夹由电子表格上的列值确定(提交表单时会生成新值)。目前,即使设置了触发事件,该脚本也不会自动启动,但在手动运行时将在适当的位置启动并创建新文件夹。任何帮助将不胜感激。

function createNewFolder() {

    // identify the sheet where the data resides 
    var ss = SpreadsheetApp.getActive();
    var names = ss.getSheetByName("Form Responses 1");
    var ids = ss.getSheetByName("Form Responses 1");

    //identify the cell that will be used to name the folder  
    var getName = names.getRange(names.getLastRow(), 3).getValue();

    //identify the cell that determines which parent folder to use
    var folderId = ids.getRange(ids.getLastRow(), 5).getValue();

    //identify the parent folder the new folder will be in 
    var parentFolder = DriveApp.getFolderById(folderId);

    //create the new folder 
    var newFolder = parentFolder.createFolder(getName);

}

触发器大约在85%的时间内失败,并且设置为在关联的电子表格上记录新表单响应时触发。

2 个答案:

答案 0 :(得分:0)

尝试以此替换您的onFormSubmit函数:

此功能应在具有链接表的电子表格中创建。此功能利用在表单提交事件对象中发送的数据。不要忘记在函数中包含“ e”作为参数。

function createNewFolder(e) {
  var parentFolder = DriveApp.getFolderById(e.values[4]);
  var newFolder = parentFolder.createFolder(e.values[2]);
}

另外,由于我们发现虚假表单提交触发器存在很多问题,因此您可能还想看看this question。如果您不需要很好地实现它,那么可能要考虑一下。

答案 1 :(得分:-1)

最有可能是异步问题。在parentFolder从DriveApp提取数据之前,parentFolder.createFolder函数可能会被调用。 试试这个:

var newFolder = parentFolder.then(() => {
    parentFolder.createFolder(getName)
})
相关问题