10

Google スプレッドシートで、HTML から作成されたモーダル ダイアログを表示し、関数を実行して、その HTML プロンプトを自動的に閉じます。

ダイアログは、関数の実行が終了するまで表示されたままになり、その後自動的に消えます。

このプロセスは 3 時間ごとに繰り返す必要があり、スクリプトは私として実行する必要があります (私は他のユーザーが持っていない編集権限を持っているため)。そのため、単純なトリガーはおそらく機能しません (インストール可能なトリガーを作成する必要があることを読みました)。指定された時間に現在のユーザーが誰であるかではなく、関数を自分として実行する場合)

私は現在持っています:

  1. HTML ファイルを使用してモーダル ダイアログを作成する .gs 関数 Magic_Telling
  2. プロンプトの 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 の最初の行に到達したとき

これを回避するにはどうすればよいですか?

4

3 に答える 3