前提・実現したいこと
GASにてdoGet()の中で
・スプレッドを作成(実際は作成してますが、サンプルは固定にしています。作成場所は開発者のドライブ内で共有しています)
・スプレッドの起動時のトリガーを設定
・Webにてスプレッドを表示
を行っています。
起動時のトリガーとはカスタムメニューを追加するもの(addMenu)で、
カスタムメニューはシンプルにA1セルに「メニュー押した」と値をセットするもの(sendShonin)です。
open.htmlはもらったurlをhrefで表示しています。
開発者のIDで実行するとカスタムメニューが動くのですが、他者のIDで実行するとカスタムメニュー押下後
「スクリプトを実行しています」のまま完了しません。
スクリプトのWebアプリケーションとして導入は
・次のユーザーとしてアプリケーションを実行:自分
・アプリケーションにアクセスできるユーザー:組織の全員
を設定しています。
シンプル過ぎて何か設定が足りないのか、権限の問題なのかわかりません。
どなたかわかる方教えていただけませんでしょうか。
よろしくお願い致します。
発生している問題・エラーメッセージ
「スクリプトを実行しています」のまま完了になりません。
該当のソースコード
function doGet(e) {
ScriptApp.newTrigger("addMenu").forSpreadsheet("スプレッドのID").onOpen().create();
var temp = HtmlService.createTemplateFromFile('open');
temp.title = 'テスト';
temp.msg = 'スプレッドを開いています・・・';
temp.url = 'https://docs.google.com/spreadsheets/d/' + "スプレッドのID";
return temp.evaluate();
}
function addMenu() {
var ui = SpreadsheetApp.getUi();
var menu = ui.createMenu('カスタムメニュー');
menu.addItem('追加されたメニュー', 'sendShonin');
menu.addToUi();
}
function sendShonin() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var form_sheet = ss.getSheetByName("シート1");
form_sheet.getRange('A1').setValue("メニュー押した");
}
試したこと
スクリプト内で起動時のトリガー(addMenu)を追加せずに、元々のスプレッドで直接、起動時のトリガーをセットしてカスタムメニューを追加した場合は、上手く動きました。
ですので、スクリプト内でトリガーを追加すると上手くいかないように思えます。
※追記
直接とは元々のスプレッドのスクリプトにaddMenuとsendShoninを貼り付けて、トリガー画面で設定しました。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
あなたの回答
tips
プレビュー