Google スプレッドシートで、HTML から作成されたモーダル ダイアログを表示し、関数を実行して、その HTML プロンプトを自動的に閉じます。
ダイアログは、関数の実行が終了するまで表示されたままになり、その後自動的に消えます。
このプロセスは 3 時間ごとに繰り返す必要があり、スクリプトは私として実行する必要があります (私は他のユーザーが持っていない編集権限を持っているため)。そのため、単純なトリガーはおそらく機能しません (インストール可能なトリガーを作成する必要があることを読みました)。指定された時間に現在のユーザーが誰であるかではなく、関数を自分として実行する場合)
私は現在持っています:
- HTML ファイルを使用してモーダル ダイアログを作成する .gs 関数 Magic_Telling
- プロンプトの css / html スタイルを含む HTML ファイル、Prompt_Styling。次に、この HTML ファイルは、行を処理する .gs 関数 All_In を呼び出します。
私のコード:
Magic_Telling HTML ファイルからモーダル ダイアログを作成します。
function Magic_Telling() {
var UI = SpreadsheetApp.getUi();
var newline = '\n'
// Display a modal dialog box with custom HtmlService content.
var htmlOutput = HtmlService.createHtmlOutputFromFile('PromptStyling')
.setSandboxMode(HtmlService.SandboxMode.IFRAME)
.setWidth(300)
.setHeight(100);
UI.showModalDialog(htmlOutput, ' ');
}
Prompt_Stylingスタイリング プロンプト + 行を処理する関数 All_In を実行するスクリプト用の HTML ファイル
<html>
<head>
// some irrelevant stuff here
</head>
<script>
window.onload = function() {
google.script.run
.withSuccessHandler(closeDialog)
.All_In();
};
window.closeDialog = function() {
google.script.host.close();
};
</script>
</html>
All_In行を処理する関数
function All_In() {
UnlockRowBlocks();
UnhideRowBlocks();
LockRowBlocks();
HideRowBlocks();
}
スクリプト エディタから MagicTelling を実行すると、問題なく動作します。シーケンス全体が実行されます (プロンプトが表示され、All_In が実行され、プロンプトが消えます)。完全。
次に、[スクリプト エディター] > [リソース] > [現在のプロジェクトのトリガー] に移動してインストール可能なトリガーを作成し、3 時間ごとに Magic_Telling を実行するトリガーを追加しました。(これは「インストール可能なトリガー」だと思います)
しかし、次のエラー メッセージが表示されます。
このコンテキストから SpreadsheetApp.getUi() を呼び出すことはできません。
...関数が Magic_Telling の最初の行に到達したとき
これを回避するにはどうすればよいですか?