首页 > 解决方案 > Google Apps 脚本 - 从自定义菜单项获取 google 表格中的权限错误

问题描述

我创建了一个谷歌脚本来从谷歌表格中导出特定数据。知道我的脚本无法创建新文件,除非从自定义菜单运行,我创建了以下代码:

function onOpen () {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var menuEntries = [];
    MenuEntries.push({name:"Export Project sheets", 
    functionName:"exportProjectSheet"})
    ss.addMenu("Export", menuEntries);
}

这反过来又调用了这个自定义函数(出于相关性和隐私原因,除了这个选择之外,大部分都被编辑了):

 function exportProjectSheets() {
      var id = DocumentApp.create("WO #" + projectWorkOrderNumber.getValue() 
      + " " + projectName.getValue()).getId(); //Create a new document with 
      the project name, plus grab it's id as a value
      //DOCUMENT FILLING
      var doc = DocumentApp.openById(id); //create a variable that refers to 
      the document body so we can edit it
 }

我很确定我已经授予了所有必要的访问权限 - 但是由于某种原因,每当我尝试在自定义菜单中运行该功能时,我都会收到错误消息:“您没有调用 create 的权限。” 是什么赋予了?

{
  "timeZone": "America/New_York",
   "dependencies": {
   },
  "exceptionLogging": "STACKDRIVER",
  "sheets": {
    "macros": [{
      "menuName": "exportProjectSheet",
      "functionName": "exportProjectSheet"
    }, {
      "menuName": "timestamp",
      "functionName": "timestamp"
    }, {
      "menuName": "onOpen",
      "functionName": "onOpen"
    }, {
      "menuName": "export",
      "functionName": "export"
    }]
}

编辑:根据要求添加清单文件数据。

标签: javascriptgoogle-apps-script

解决方案


检查文件-> 项目属性-> 范围以获取自动生成的范围。如果您看到 currentonly,那么您在某处指定了 // @OnlyCurrentDoc,并且将无法访问除此脚本绑定到的文件之外的任何其他文件。如果您无法删除该评论,您可以添加 // @NotOnlyCurrentDoc 以使其无效(即,如果它在库中)。-Tehhowch

这是正确的答案。


推荐阅读