1

刷新共享电子表格后,onOpen 不会对同样具有访问权限的其他用户运行。

但是所有者能够运行代码和脚本。

代码.gs

function onOpen(e) {
    test();
  SpreadsheetApp.getUi() // Or DocumentApp, SlidesApp, or FormApp.
      .createMenu('Custom Menu')
      .addItem('First item', 'menuItem1')
      .addToUi();
    SpreadsheetApp.getUi() // Or DocumentApp, SlidesApp, or FormApp.
        .createMenu('Custom Menu').addItem('Test', 'test').addToUi();
};

function test() {
    var ui = SpreadsheetApp.getUi(); // Same variations.
    var result = ui.prompt('Spreadsheet Restriction', 'Enter password:', ui.ButtonSet.OK);
    // Process the user's response.
    var button = result.getSelectedButton();
    var text = result.getResponseText();
    if (button == ui.Button.OK) {
        // User clicked "OK".
    } else if (button == ui.Button.CLOSE) {
        // User clicked X in the title bar.
        ui.alert('Spreadsheet is protected.');
        test();
    }
};
function myFunction() {

}

已将访问电子表格和脚本共享给其他用户,但他们仍然看不到它正在工作。感谢您的帮助...谢谢!

4

1 回答 1

1
  1. 您的工作表/脚本的用户必须对工作表文档具有编辑权限onOpen()才能执行触发器。从文档中:

    如果以只读(查看或评论)模式打开文件,它们不会运行。

  2. 为了prompt()在函数中使用该方法onOpen(),您必须使用可安装的触发器。此外,触发器必须由将要使用它的用户设置。这同样适用于UI 类的其他功能,例如showModalDialog().

很可能会执行此严格的规则,以保护最终用户免受潜在诈骗的侵害。如果您有兴趣使用密码保护您的表格文档,我建议您查看其他解决方案,例如这个

参考

于 2020-01-06T15:27:18.497 回答