2016-03-20 1 views
0

私はGoogleスプレッドシートからhtmlメールを送信しています。特定のグループについては、送信する前にプレビューを最初に見たいと思っています。電子メールを送信するためのスクリプトは、スプレッドシートのメニュー項目をクリックして呼び出すことができます。だから、私ははい、いいえ、電子メールを送信するためのボタンとhtmlメッセージを含むポップアップを作成したい。これは複数の電子メールの場合であるため、スクリプトは次の電子メールを表示する前にユーザーの入力を待つ必要があります。ユーザーがはいまたはいいえをクリックするまで、スクリプトの実行を停止するGoogleスプレッドシートにhtmlとyes/no-buttonを含む警告メッセージを表示するにはどうすればよいですか?

私はUiクラスの警告機能を使用できますが、問題は、htmlではなくメッセージの文字列のみを受け入れることです。しかし、アラートはユーザーが入力を行うまでコード実行を停止します。

他のオプションは、UiクラスのshowModelDialog関数です。ここではhtmlをパラメータとして指定できますが、google-apps-scriptは実行を停止しないため、結果はポップアップのみ表示されます最後のメールです

パラメータとしてhtmlを指定できないため、警告機能はオプションではないため、showModelDialogが最適です。私がshowModelDialogを使って見つけた可能性のあまりない解決策は、関数が呼び出されるたびに、各ポップアップの間にクラスのユーティリティからスリープ関数を使用するか、または1つの電子メールだけを送信することです。

私はhtml電子メールでポップアップを表示でき、appsスクリプトはユーザーからの入力を受け取るまで実行を停止するソリューションはありますか?

+0

を参照する2つの部分にあなたの機能を壊します。ダイアログボックスの後のすべてを新しい関数に置き、その関数をダイアログボックスから呼び出します。 –

+0

@ sandy-goodこれは可能な解決策ですが、多くのコードリファクタリングが必要になります。 – lonewolf

答えて

1

ui.promptが評価される応答を必要とif else条件内と呼ばれ、あなたはそれが実行され得ることはありませんことを確認できる機能がメールを送信するように、この場合

var ui = SpreadsheetApp.getUi(); 
var response = ui.prompt('Email confirmation', 'Are you sure to send the mail?', ui.ButtonSet.YES_NO); 

if (response.getSelectedButton() == ui.Button.YES) { 
    Logger.log('The user responded positively'); 
    // call the function to send mail here 
} else if (response.getSelectedButton() == ui.Button.NO) { 
    Logger.log('The user gave negative response'); 
    // Do some cleanup? 
} else { 
    Logger.log('The user clicked the close button in the dialog\'s title bar.'); 
} 

のために良い回避策であるように思われます。

+0

ポップアップでhtmlメッセージをプレビューしたいのですが、私はこれをどのようにプロンプ​​トで行うことができません。 – lonewolf

0

それ自体はshowModelDialogで実行できます。
メールを送信する関数は、sendMailという関数で指定できます。

onclickイベントでその機能を呼び出すためのボタンを追加します。

<input id="btn" type="button" value="Send" onclick="google.script.host.close()" /> 

詳細情報については、ダイアログボックスが表示されている点で
Custom Dialogs in Google Apps Script
Class google.script.run (Client-side API)

+0

提案すると、最後のメッセージのポップアップが表示されるだけです(コードは実行され続けているため、ポップアップが表示されたままになるため)。 @ sandy-goodが示唆しているように、私はポップアップが最初の部分の終わりであるところで機能を壊すことができ、ユーザーがクリックすると、次の部分が始まりますが、これは多くのリファクタリングを必要とします。 – lonewolf

関連する問題