2016-06-16 15 views
-1
function arrayMail(){ 
    var ss=SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheetByName('Sheet1'); 
    var startRow = 2; 
    var lastRow = sheet.getLastRow(); 
    var lastColumn = sheet.getLastColumn(); 
    var range = sheet.getRange(startRow,1,lastRow,lastColumn); 
    var data = range.getValues(); 
    var array = []; 
    for(var i=0;i<data.length;++i){ 
     var row = data[i]; 
     var rowTemp=[]; //create a blank array that will hold only the desired columns in this row 
     for (var j=0; j<row.length; j++)//iterates through columns 
     { 
      if(j==4||j==3||j==1||j==5){continue;} 
      rowTemp.push(row[j]) 

     }  
     var emailPos = row[3]; 
     var date = row[2]; 
     if(emailPos =='[email protected]'&& date == 0){ 
      array.push(rowTemp); 
     } 
    } 
    GmailApp.sendEmail('[email protected]','This is a test',array.join('\n\n')); 
} 

上記のスクリプト日付のカウントが0で電子メールが電子メールの参照者になると私は電子メールを送信しました。私は配列(上記のスクリプトを使用している場合はプレーンテキスト)をテーブル形式にしたいと考えました。私はテーブルの書式設定に悩まされています。問題は、ここでどのようにテーブル形式で作るのですか?書籍/例から読み取った後、スクリプトGoogle Appsスクリプトのテーブルを配列から作成する


初級レベル、私は以下のスクリプトを思い付きました。しかし、意図したとおりに動作しません。

function arrayMail(){ 
     var ss=SpreadsheetApp.getActiveSpreadsheet(); 
     var sheet = ss.getSheetByName('Sheet1'); 
     var startRow = 2; 
     var lastRow = sheet.getLastRow(); 
     var lastColumn = sheet.getLastColumn(); 
     var range = sheet.getRange(startRow,1,lastRow,lastColumn); 
     var data = range.getValues(); 
     var tableStart = "<table border=\"1\"><tr>"; 
     var tableEnd = "</tr></table>"; 
     var array = []; 
     for(var i=0;i<data.length;++i){ 
      var row = data[i]; 
      var rowTemp=[]; //create a blank array that will hold only the desired columns in this row 
     for (var j=0; j<row.length; j++)//iterates through columns 
     { 
      if(j==4||j==3||j==1||j==5){continue;} 
      rowTemp.push('<td>'+row[j]+'</td>');  
     }  
     var emailPos = row[3]; 
     var date = row[2]; 
      if(emailPos =='[email protected]'&& date == 0){ 
      array.push(rowTemp); 
     } 
    } 
    var HTMLbody = tableStart +array.join('')+tableEnd; 
    GmailApp.sendEmail('[email protected]','This is a test',HTMLbody,{htmlBody:HTMLbody}); 
    } 

結果:私は何になりたかった

Image of result

が似ています。

輸液ポンプ0
輸液ポンプ0

+0

ようこそ[so]。 [ツアー]とチェックアウト[質問]をしてください。 –

+0

ところで、私たちは専門レベルで質問を分類しません。 –

+0

[sendMail(message)](https://developers.google.com/apps-script/reference/mail/mail-app#sendemailmessage)を参照してください。 –

答えて

1

これは完全な答えではないが、以下のコードを使用すると、Google +のポストでは約尋ねた文字列に配列を翻訳する...

var array = [ 
    ['Infusion Pump', 'B', 'C', 'D', 'E', 'F'], 
    ['Another Pump', 'B', 'C', 'D', 'E', 'F'], 
    ['Defib', 'B', 'C', 'D', 'E', 'F'] 
]; 

var str = ''; 

for (var i = 0; i < array.length; i++) { 

    str = str + '<tr>'; 

    for (var j = 0; j < array[i].length; j++) { 

    str = str + '<td>' + array[i][j] + '</td>'; 

    } 

    str = str + '</tr>'; 
} 

console.log(str); 
+0

私はそれが完全な答えではないことに気付いていますが、あなたのコードからいくつかの変更を加えて、すでに私の問題を解決しています。私は、テーブルを作る方法のヒントを得るために、これについてGoogle+で尋ねました。それぞれの行にコメントすることができれば、それは私にとってより良い理解のために非常に素晴らしいことです。 –

0

ベース

function arrayMail(){ 
var ss=SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getSheetByName('Sheet1'); 
var startRow = 2; 
var lastRow = sheet.getLastRow(); 
var lastColumn = sheet.getLastColumn(); 
var range = sheet.getRange(startRow,1,lastRow,lastColumn); 
var data = range.getValues(); 
var array = []; 
for(var i=0;i<data.length;++i){ 
    var row = data[i]; 
    var rowTemp=[]; //create a blank array that will hold only the desired columns in this row 
    for (var j=0; j<row.length; j++){ //iterates through columns 
     if(j==4){continue;} 
     rowTemp.push(row[j]);   
     }  
    var emailPos = row[3]; 
    var date = row[2]; 
     if(emailPos =='[email protected]'&& date == -28){ 
     array.push(rowTemp); 
     } 
} 
var str = ''; 
var bodyEnd = '</table>'; 
var header = '<table border =1><tr><th>Message</th><th>Date Remind</th><th>Days Left</th><th>Email Address</th><th>Status</th></tr>'; 
for (var k = 0; k < array.length; k++) { 
    str = str + '<tr>'; 
    for (var l = 0; l < array[k].length; l++) { 
    str = str + '<td>' + array[k][l] + '</td>'; 
     } 
    str = str + '</tr>'; 
var msg = header+str+bodyEnd; 
} 
GmailApp.sendEmail(Session.getActiveUser().getEmail(),'This is a test',msg, {htmlBody:msg}); 
}; 

:SamScholefieldの答えに私はここに私の必要性とを合わせてビットが最終的なコードで自分のコードを変更しました

関連する問題