Google スプレッドシート用のスクリプトを作成しました。このスクリプトは、スプレッドシートのカスタム メニュー項目で説明されているように、新しいメニュー項目を追加するだけです。次に、このスクリプトを Web アプリとして展開し、アプリをインストールするすべてのユーザーが新しいメニュー項目を表示できるようにします。そして、私はこの時点で立ち往生しています。
私が理解しているように、スクリプトを Web アプリとしてデプロイすると、onOpen 関数はその意味を失います。そのため、doGet 内で onOpen イベントのカスタム トリガーを作成し、それに myOnOpen ハンドラをアタッチし、myOnOpen 内でメニュー項目を追加しましたが、項目が表示されません。
これが私のコードです:
function doGet() {
var newSheet = SpreadsheetApp.create("new sheet");
var newId = newSheet.getId();
ScriptProperties.setProperty('newId', newId);
ScriptApp.newTrigger("myOnOpen")
.forSpreadsheet(newId)
.onOpen()
.create();
};
function myOnOpen() {
var newId = ScriptProperties.getProperty('newId');
var sheet = SpreadsheetApp.openById(newId);
var entries = [ { name : "Show bingo", functionName : "Bingo" } ];
sheet.addMenu("My Menu", entries);
};
function Bingo() {
Browser.msgBox("Bingo!");
};
そのため、アプリをインストールしたユーザーが「新しいシート」スプレッドシートを開くと、「マイ メニュー」が表示されません。ここで何が間違っていますか?メニュー項目が表示されないのはなぜですか? 最終的には、追加のメニューとダイアログで Google スプレッドシート UI を拡張する Web アプリを作成したいと考えています。
どんなアドバイスでも大歓迎です。ありがとう!