【问题标题】:Google Sheets "You do not have permission to call appendRow"Google表格“您无权调用appendRow”
【发布时间】:2017-04-24 17:20:48
【问题描述】:
function myFunction() {
    var url = 'https://api.github.com/users/chaimf90/repos'
    var response = UrlFetchApp.fetch(url);
    var json = response.getContentText();
    var data = JSON.parse(json)
    var sheet = SpreadsheetApp.getActiveSheet();
    sheet.appendRow(['Repo Name', data[0].name]);
}

当我从脚本编辑器执行此函数时,它按预期运行,但是当我尝试通过调用 =myFunction() 在工作表本身中调用此函数时,我收到一条错误消息,提示我无权调用 @987654325 @。

为什么我可以从脚本编辑器调用这个函数,但不能从工作表本身调用?

【问题讨论】:

  • 这里有一个SO post 描述它们的区别。您还可以阅读 Permissions and types of scripts 以获取更多参考。此外,请确保您是正在修改的脚本的所有者。
  • 自定义函数(从工作表调用的应用程序脚本方法)只能编辑调用它们的单元格(以及紧邻下方和右侧的单元格),并且只能通过返回值/数组的值来编辑。

标签: javascript google-apps-script google-spreadsheet-api


【解决方案1】:

我遇到了同样的问题。解决方案似乎是创建一个运行 Apps 脚本函数的自定义菜单,而不是编写自定义函数并从电子表格中的单元格调用它。

从菜单触发的功能会在必要时请求用户授权,因此可以使用所有 Apps 脚本服务。我学到了这个here

例子:

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('My Custom Menu')
      .addItem('Run My Function', 'myFunction')
  .addToUi();
}

function myFunction() {
  SpreadsheetApp.getUi()
     .alert('Running My Function');
}

编写并保存此代码后:

  1. 关闭并重新打开您的 google 表格文档。
  2. 几秒钟后,一个新菜单“我的自定义菜单”将出现在 顶部,在文件、编辑、查看、...、帮助旁边。
  3. 单击“我的自定义菜单”,然后单击“运行我的函数”以调用 函数 myFunction。

【讨论】:

    猜你喜欢
    • 2022-11-04
    • 2018-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多