在打开的电子表格中包括父文件夹名称

时间:2019-05-07 23:03:22

标签: google-apps-script google-sheets google-drive-api

我希望电子表格在活动工作表onOpen的单元格A1中自动包含其父文件夹的名称。我有一个脚本,如果我手动运行它可以成功实现此目标,但是我无法完成此onOpen。如下面的建议,我尝试使用可安装的onOpen触发器,但这不是解决方案,因为我想制作电子表格的副本并在onOpen中包含文件夹名称。触发器将不会与电子表格一起复制,因此我回到第一篇。我认为问题出在权限上?有解决方法吗?

2 个答案:

答案 0 :(得分:1)

如果项目中还没有一个可以使用类似的方法来创建可安装的onOpen触发器。

function createOpenTrigger(funcname) {
  if(funcname) {
    if(!isTrigger(funcname)) {
      ScriptApp.newTrigger(functionName).forSpreadsheet(SpreadsheetApp.getActive()).onOpen().create();
    }
  }
}

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;
}

当然,用户必须首先批准它。

答案 1 :(得分:0)

  

按照下面的建议,我尝试使用可安装的onOpen触发器,但这不是解决方案,因为我想制作电子表格的副本并在onOpen中包含文件夹名称。触发器将不会与电子表格一起复制,因此我回到第一篇。我认为问题出在权限上?有解决方法吗?

否,该问题与权限无关,该问题与其他概念有关。我将尝试进行总结,包括我认为该问题所需的最少内容,以帮助您学习基本术语,以便您可以扫描本站点和其他站点以查找所需的内容或有帮助的内容。更具体的问题:

  • 有两种脚本项目,有界的和独立的。
  • 将执行某些动作的脚本应在执行前得到授权。请继续阅读。
  • 有两种触发器,简单的是可安装的
  • 可手动或通过脚本创建可安装的触发器。通过脚本创建触发器需要授权。
  • 可安装触发器仅可以执行手动或通过脚本创建触发器的用户已被授权的功能。如果您创建了一个可安装的触发器,但后来又对该脚本进行了更改,也许这将使您的脚本应再次获得授权。
  • 可以使用有界和独立的项目脚本为电子表格创建可安装的触发器。这种触发器需要授权才能访问非公开电子表格
  • 要获取电子表格的父文件夹,您的脚本应使用Drive Service或Drive Advanced Service。这需要授权。