【问题标题】:onEdit(e) not triggering createFolder + enable trigger for new rowsonEdit(e) 不触发 createFolder + 为新行启用触发器
【发布时间】:2019-08-30 13:35:04
【问题描述】:

似乎 onEdit(e) 不会触发在谷歌驱动器中创建新文件夹 - 仅在显式运行时有效。有任何想法吗?谢谢

function onEdit(e) {
  var requestRow = e.range.getRow();
  var folderName = SpreadsheetApp.getActiveSheet().getRange(requestRow,6).getValue();
  var newFolder = DriveApp.getFolderById('1LOfkVGrV-juzUiwbU8owHj74T9wMAz').createFolder(folderName);
}

【问题讨论】:

标签: google-apps-script google-sheets triggers


【解决方案1】:

试试这个:

function func1(e) {
  DriveApp.getFolderById('1LOfkVGrV-juzUiwbU8owHj74T9wMAz').createFolder(SpreadsheetApp.getActiveSheet().getRange(e.range.rowStart,6).getValue());
}

function isTrigger(funcName){
  var r=false;
  if(funcName){
    var allTriggers=ScriptApp.getProjectTriggers();
    for(var i=0;i<allTriggers.length;i++){
      if(funcName==allTriggers[i].getHandlerFunction()){
        r=true;
        break;
      }
    }
  }
  return r;
}

运行一次以创建触发器。

function createOnEditTrigger() {
  if(!isTrigger('func1')){
    ScriptApp.newTrigger('func1').forSpreadsheet(SpreadsheetApp.getActive().getId()).onEdit().create();
  }
}

【讨论】:

  • 嘿库珀,知道如何使它仅适用于新行吗?
  • 检查event objects,看看您是否满足任何要求。
  • 是的,这很好,带有 e.changeType == 'INSERT_ROW' 的 "onChange(e)" 应该可以做到,但不知道如何让它运行。添加如下,但不起作用 - function func1(e) { if (e.changeType == 'INSERT_ROW') { DriveApp.getFolderById('1LOfkVGrV-juzUiwbU8owHj74T9wMAz').createFolder(SpreadsheetApp.getActiveSheet().getRange(e.range.rowStart,6).getValue()); }}
猜你喜欢
  • 2018-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-12
  • 1970-01-01
  • 2018-02-05
相关资源
最近更新 更多