2017-11-16 16 views
-1

Google Apps内で、私がPDFとして作業しているスプレッドシートを電子メールで送信する機能を作成しています。ユーザーはボタンをクリックする必要があります。ダイアログボックスが開き、電子メールアドレス、件名、メッセージを入力してそこから電子メールを送信できます。外部HTMLファイルから電子メールアドレスを使用してGoogle Appsスクリプトを使用してメールを送信する

私は、次のHTMLとサイドバーとして電子メールの対話を作成しました:

<!DOCTYPE html> 
<html> 
    <head> 
     <link rel = "stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css"> 
     <base target="_top"> 
    </head> 
    <body> 
     <form> 
     <div class="form-group"> 
      <label for="exampleInputEmail1">Email address</label> 
      <input type="email" class="form-control" id="exampleInputEmail1" ar. ia-describedby="emailHelp" value="[email protected]"> 
     </div> 
     <div class="form-group"> 
      <label for="subject">Subject</label> 
      <input type="input" class="form-control" id="subject" value="Contract renewal - Miki Travel"> 
     </div> 
     <div class="form-group"> 
      <label for="subject">Message</label> 
      <textarea class="form-control" rows="12" id="text"></textarea> 
     </div> 

     <button type="submit" class="btn btn-primary">Submit</button> 
     </form> 
    </body> 
</html> 

はしかし、私は電子メールを送信するスクリプトを書いているとき、私はメールボックスの内容をどのように保存しますここで電子メールを送信するために使用する変数として?同じことが明らかに主題とメッセージそのものに当てはまります。

答えて

1

1)入力の名前プロパティを定義します。現在、フォームフィールドには「名前」プロパティはありません。ここでは、これはフォームが(例えば、form.email、form.subject、など)に提出されたときに、フォームオブジェクトのプロパティにアクセスできるようになります

<input type="email" name="email" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp" value="[email protected]"> 

ように見えるべきかの例です。

2)クライアントサイド(HTML)では、 'submit'イベントを処理するコードを記述する必要があります。クロージング</body>タグの前に次の行を追加します。あなたも同じ結果を達成するためにjQueryを使用することができます

<script> 


window.onload = function() { 


    document.getElementsByTagName('form')[0] 
      .addEventListener('submit', function(e){ 

       e.preventDefault(); // intercept redirect to another page 
       google.script.run.handleFormSubmit(this); // pass the form object to the server-side function. 



      }); 

} 



</script> 

。 は、ここで入力の内容は、クライアント・サーバ間の通信のための

function handleFormSubmit(form) { 

    Logger.log(form.email); 
    Logger.log(form.subject); 
    Logger.log(form.message); 

} 

使用google.script.runをフィールド記録します(.GS)機能私のサーバー側です。詳細については、ドキュメントを参照してくださいhttps://developers.google.com/apps-script/guides/html/communication

+0

これはすばらしいおかげです!!!!もう1つの質問 - HTMLファイルの電子メール入力にスプレッドシートの値を事前に入力するにはどうすればいいですか?電子メールアドレスがセルB15に表示され、次のように抽出しようとしました。 function getEmail() { var s = SpreadsheetApp.getActive()。getSheetByName( "Template"); var row = 15; var column = 2; var n = Utilities.formatString( '%s'、s.getRange(row、column).getValue()); return n; Logger.log(n); } これは何もロギングしていないので、HTMLでこれを入力する次の段階に移動することはできません(私はあまり確信していません!) – DaveB1

+0

これは、 'ステートメントをLogger.log()呼び出しの前に挿入します。 'return'の後のものは実行されません。私はあなたがJavaScriptの基礎を学ぶのにもっと時間を費やすことをお勧めします。 GASからクライアントサイドのHTMLに変数を渡すには、この回答を確認してください。https://stackoverflow.com/questions/45247987/push-variables-into-html-using-google-script/45248148#45248148 –

+0

ありがとうございました。私が推測することを学ぶ唯一の方法は試してみることです。 – DaveB1

0

あなたは、その唯一のuが得るPDFや画像フォーマットは、このリンクを介してファイル 行くを添付してサポートを拡張ファイルの下にサポートしています .XLS PDFが、GoogleのAppスクリプトを送信し、Googleアプリのスクリプトを使用してGoogleのAPIのメールサービスでの.xlsxすることができますuがまだの.xlsx取り付け、.XLS、そのは をサポートしていないエラーによってそれを提出しようとした場合、この

https://developers.google.com/apps-script/reference/base/blob#getAs(String)

の機密レベル変更の詳細情報私はすでにこの問題に直面していましたが、Uはjavascriptを経由XLSX形式としてダウンロードすることができます。

+0

ありがとうございました。実際にはPDF形式にする必要があります。このシートは実際にはサプライヤーに送る必要のある契約テンプレートなので、PDF形式で受け取る必要があります。私の主な問題は、フォームから電子メールアドレスを抽出し、それを私のGoogleアプリケーションスクリプトでvar emailAddressとして使用する方法です。 – DaveB1

+0

私はここで私を得ることができません(私の主な問題はフォームから電子メールアドレスを抽出し、それは私のGoogleアプリスクリプトのvar emailAddressとして)あなたが私にはっきりと説明してくれます。シートからのメールを伸ばすか、手入力してください。 –

+0

私は簡単に私がこのことを手がけたのを手伝ってくれます。 –

関連する問題