配列 (Values と呼ばれます) は、シートの行に対応する 2 次元配列です。つまり、最初の要素を反復処理する必要があります。次のようなヘッダーと値でメッセージを構成する関数を含む小さなスクリプトを作成しました。
function test(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var responses = ss.getSheetByName("Form Responses");
var lastRow = responses.getLastRow();
var values = responses.getRange("A"+(lastRow)+":AK"+(lastRow)).getValues();// get the range and values in one step
var headers = responses.getRange("A1:AK1").getValues();// do the same for headers
var message = composeMessage(headers,values);// call the function with 2 arrays as arguments
Logger.log(message);// check the result and then send the email with message as text body
}
function composeMessage(headers,values){
var message = 'Here are the data :'
for(var c=0;c<values[0].length;++c){
message+='\n'+headers[0][c]+' : '+values[0][c]
}
return message;
}
同じ構造を使用して、html テーブルを使用して、さらに見栄えの良いメールを html 形式で作成できることに注意してください(参照はこちら)。
EDIT2
テーブル内のテキストと HTML の両方で生成する小さなコードを書きました。色などを使用して HTML の書式設定を自由に改善してください...
function testMail(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var responses = ss.getSheetByName("Sheet1");
var lastRow = responses.getLastRow();
var values = responses.getRange("A"+(lastRow)+":M"+(lastRow)).getValues();
var headers = responses.getRange("A1:AK1").getValues();
var message = composeMessage(headers,values);
var messageHTML = composeHtmlMsg(headers,values);
Logger.log(messageHTML);
MailApp.sendEmail(Session.getEffectiveUser().getEmail(),'test html', message,{'htmlBody':messageHTML});
}
function composeMessage(headers,values){
var message = 'Here are the data you submitted :\n'
for(var c=0;c<values[0].length;++c){
message+='\n'+headers[0][c]+' : '+values[0][c]
}
return message;
}
function composeHtmlMsg(headers,values){
var message = 'Here are the data you submitted :<br><br><table style="background-color:lightblue;border-collapse:collapse;" border = 1 cellpadding = 5><th>data</th><th>Values</th><tr>'
for(var c=0;c<values[0].length;++c){
message+='<tr><td>'+headers[0][c]+'</td><td>'+values[0][c]+'</td></tr>'
}
return message+'</table>';
}
編集3
あなたのコメントに続いて:これは私のテストシート+スクリーンキャプチャのログです。ログをチェックして、データで同様の構造が得られるかどうかを確認してください。
[13-07-16 14:29:40:920 CEST] Here are the data you submitted :<br><br><table style="background-color:lightblue;border-collapse:collapse;" border = 1 cellpadding = 5><th>data</th><th>Values</th><tr><tr><td>Titre</td><td>Mr</td></tr><tr><td>nom</td><td>Wales</td></tr><tr><td>prénom</td><td>xavier</td></tr><tr><td>adresse</td><td>Sunset Bld, 45678</td></tr><tr><td>code</td><td>5000</td></tr><tr><td>ville</td><td>Los Angeles</td></tr><tr><td>pays</td><td>USA</td></tr><tr><td>email</td><td>john.smith@gmail.com</td></tr><tr><td>tél1</td><td>1212345654345</td></tr><tr><td>tél2</td><td></td></tr><tr><td>Commun</td><td>Théâtre</td></tr><tr><td>GROUPE</td><td>Festival</td></tr><tr><td>organisme</td><td>xxx</td></tr></table>
- 「th」はヘッダータグです(<>の間はブラウザに表示されないのでここには書きません)
- 「td」はセルタグです(<>の間はブラウザに表示されないのでここには書きません)
- 「tr」は「row」タグです(<>の間はブラウザに表示されないのでここには書きません)
これらの各タグは、有効にするために /t... 終了タグ (<> で囲む) で終了する必要があります。ログ データでわかるように、スクリプトのループ構造が自動的に処理します。
また、ループの最後にテーブル終了タグを追加したことにも注意してください...最初のコードでは忘れていましたが、テストではそのように機能しました。