ユーザーがメモを含むスプレッドシートのセルから値を削除すると、UiApp を表示したいと考えています。
onEdit トリガーは、次の関数に設定されます。
function showDialogue() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var r = ss.getActiveCell();
if (r.getValue() != '') return;
if (r.getValue() == '' && r.getComment() != '') {
var app = UiApp.createApplication();
var label = app.createLabel('If you can see this, it has worked correctly.');
app.add(label);
var button = app.createButton('Click to Close');
app.add(button);
var handler = app.createServerHandler('myClickHandler');
handler.addCallbackElement(label);
button.addClickHandler(handler);
r.setValue(r.getRow());
ss.show(app);
}
}
function myClickHandler(e) {
var app = UiApp.getActiveApplication();
app.close();
return app;
}
私が実行すると正常に動作しますが、別のユーザーがスプレッドシートを開いていると、UiApp が正しく表示されません。UiApp ウィンドウは開きますが、ウィジェットは表示されず、[名前を付けて保存] ダイアログ ボックスが開き、userAppPanel を保存するようにユーザーに促します。
この単純化されたスプレッドシートで問題を再現しました。このスプレッドシートは、リンクを知っている人なら誰とでも共有できます (編集可能)。