google-apps-script
  • google-spreadsheet
  • 2012-03-22 8 views 0 likes 
    0

    値:Googleドキュメントのスプレッドシート、電子メールを送信し、ご注文は、私はGoogleドキュメントのスプレッドシートを使用してフォームを作成し、そしてユーザーがフォームを満たしたときに電子メールを送信するスクリプトを作成

     
    function sendFormByEmail(e){ 
    
         var email = "AAA"; 
         var subject = "XXX"; 
         var message = ""; 
         for(var field in e.namedValues) 
         message += field + ' = '+ e.namedValues[field].toString() + "\n\n"; 
    
         var advancedArgs = {replyTo:e.namedValues['E-mail'].toString()}; 
         MailApp.sendEmail(email, subject, message, advancedArgs); 
    
    
    } 
    

    スクリプトの動作を、 しかしとき電子メールを送信すると、データはフォームのフィールドとしてソートされません。

    スプレッドシート(​​フォーム)内の値を並べ替えるためにスクリプトを変更するにはどうすればよいですか?

    +0

    javascriptのfor(... in ...)は任意の順序で実行されます。注文が関連している場合には使用しないことを文書化しています。 –

    答えて

    1

    スプレッドシートから列の順序を取得できます。このような何かを:

    function sendFormByEmail(e){ 
    
         var email = "AAA"; 
         var subject = "XXX"; 
         var message = ""; 
         var s = SpreadsheetApp.getActive().getSheetByName("Sheet1"); 
         var headers = s.getRange(1,1,1,s.getLastColumn()).getValues()[0]; 
         for(var i in headers) 
         message += headers[i] + ' = '+ e.namedValues[headers[i]].toString() + "\n\n"; 
    
         var advancedArgs = {replyTo:e.namedValues['E-mail'].toString()}; 
         MailApp.sendEmail(email, subject, message, advancedArgs); 
    } 
    

    当然、あなたは、実際のシート名にシート名Sheet1を変更する必要があります。ちなみに、私はこれ以上のことをするスクリプトを書いています。もしこれがプログラミングの練習でなければ、チェックアウトしたいかもしれません。これはFormEmailerと呼ばれ、スクリプトギャラリーとそのsiteにあります。

    +0

    特に、フォームの編集やフィールドの追加と削除を行った後は、列の順序がフィールドの順序と異なる場合があるので注意してください。 –

    +0

    合意しましたが、そのような場合は、スプレッドシートに行き、希望の順序で列を並べ替えるのは簡単です。 GoogleフォームのAPIはないので、実際の注文を知る唯一の方法はhtmlを分析することです。 –

    +0

    待って、列の順序を変更することはできません、フォームは同じ位置に回答を書き続けると、フィールドが混在します。 –

     関連する問題

    • 関連する問題はありません^_^