【问题标题】:Google Script document openbyid permission errorGoogle Script 文档 openbyid 权限错误
【发布时间】:2016-09-27 17:10:30
【问题描述】:

如果在 Google Doc 的 onOpen 函数中,我通过按 id 打开电子表格来创建电子表格对象,如果我使用菜单系统,如何将该对象传递给其他函数? (下面有更长的解释)

我有一个 google doc 脚本,它将在特定时间拍摄文档的快照,然后将其导出到 .docx 并使用快照的 url 更新电子表格。这是由一个菜单选项启动的,如下所示:

function onOpen(e) {
DocumentApp.getUi().createMenu('Senate Secretary Menu')
   .addItem('Snapshot', 'snapshot')
  .addToUi();
}

调用函数snapshot()

function snapshot() {
//open the spreadsheet using id
var ss=SpreadsheetApp.openById('spreadsheet_id');  

这会产生一个you do not have permission to call openbyid() 错误

我了解 google 脚本禁止在自定义函数中调用 openbyid()(我将其解释为电子表格中的函数,但whatevs)。 如果我将 onOpen 函数更改为包含 OpenById() 调用,它将起作用。

function onOpen(e) {
DocumentApp.getUi().createMenu('Senate Secretary Menu')
   .addItem('Snapshot', 'snapshot')
  .addToUi();
var ss=SpreadsheetApp.openById('spreadsheet_id');
}

我的问题是如何将文件对象从 onOpen 函数传递给快照函数?

【问题讨论】:

  • 澄清一下,您使用的是实际的电子表格 ID(一长串字母和数字)还是字符串 'spreadsheet_id'
  • 其实是一长串数字。但我发现下面发布的错误。

标签: google-apps-script google-docs-api


【解决方案1】:

对于可能也有此问题的任何人。我从 Google 快速入门中获取了菜单模板,但我错过了标题注释块中的 @OnlyCurrentDoc 标志。把它拿出来,我的问题就解决了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多