【问题标题】:programmatically edit script in Google Drive document以编程方式编辑 Google Drive 文档中的脚本
【发布时间】:2013-08-08 18:08:37
【问题描述】:

我有一个 Google Drive 文档,它使用 Google Apps 脚本将值写入 Google Drive 电子表格。

与文档相关的脚本看起来很像这样:

// must change value to actual spreadsheet ID
RobProject.spreadsheetID  = "spreadsheetID";

function onOpen()
{
    // do stuff;
}

每次创建电子表格及其相关文档时,我都会手动将值 spreadsheetID 更改为电子表格的 ID,以便文档知道应将其值写入哪个电子表格。

我想要一种编程方式将spreadsheetID 的正确值填入文档的脚本中。

当我搜索“以编程方式编辑脚本”时,我会得到有关创建 Google Apps 脚本的教程,而不是使用脚本编辑脚本。有没有办法使用 Google Apps 脚本编辑 Google Apps 脚本?

【问题讨论】:

    标签: google-apps-script


    【解决方案1】:

    如果我理解正确,您正在处理文档和电子表格。文档需要知道电子表格的 ID。

    有一些方法可以通过 API 访问 Google Apps 脚本代码,但这仅适用于独立项目,不适用于容器绑定脚本(很遗憾)。

    您可以考虑为文档和电子表格使用命名约定,以便您可以使用云端硬盘服务从文档获取电子表格 (DriveApp.getFilesByName())。或者可能按文件夹组织它们(DriveApp.getFoldersByName()、folder.getFiles())。

    如果您想将电子表格 ID 存储在项目属性中,您可以在文档中构建一个 UI,让用户在云端硬盘中打开文件列表并选择关联的电子表格,然后存储 ID (ScriptProperties.setProperty ('SpreadsheetId'))。

    【讨论】:

    • 按文件夹组织实际上是我最终的做法。谢谢!
    【解决方案2】:

    别忘了onOpen 有一个参数。您可以使用以下代码:

    // Define global variable somewhere 
    RobProject = {};
    
    function onOpen(e) {
    
      RobProject.sSheet = e.source; // maybe the spreadsheet object is as useful as the ID
      RobProject.spreadsheetID = e.source.getId();
    
        // do stuff;
    }
    

    为了你自己,请不要尝试编写自修改代码。

    【讨论】:

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