簡體   English   中英

從數組在Google Apps腳本中制作表格

[英]Making table in google apps script from array

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 =='example4@gmail.com'&& date == 0){
            array.push(rowTemp);
        }
    }
    GmailApp.sendEmail('example1@gmail.com','This is a test',array.join('\n\n'));
}

在上面的腳本中,當日期計數為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 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 =='example4@gmail.com'&& date == 0){
           array.push(rowTemp);
      }
    }
    var HTMLbody = tableStart +array.join('')+tableEnd;
    GmailApp.sendEmail('example@gmail.com','This is a test',HTMLbody,{htmlBody:HTMLbody});
    }

結果:

結果的形象

我想成為的樣子;

輸液泵0
輸液泵0

這不是一個完整的答案,但是下面的代碼將數組轉換為您在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);

根據SamScholefield的回答,我做了一些修改以滿足自己的需要,下面是最終代碼:

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 =='example1@gmail.com'&& 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});
};

結果

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM