簡體   English   中英

Email 使用應用程序腳本從谷歌表格中獲取表格 - 單擊按鈕

[英]Email a table from google sheets using app script - on click of a button

我是編碼新手。 這是我的第一個查詢。 請原諒我的錯誤。

我想開發一個簡單的代碼來接受客戶的訂單。 In the attached sheet - customers will select their products and a summary email should go to the customer's email id and the admin email id.

email 正在發送正確的主題行,但 email 正文不正確。

email 主體是 - [object Object] - 而不是帶有產品詳細信息的表格。

下面是代碼。 請幫忙。 提前致謝。

https://docs.google.com/spreadsheets/d/1J4OHwN3MEJwqMhOMDWg2Mt6dgqjcVlGOc2bHOS5lmRY/edit#gid=1167211647

“工作表 - 訂單選項卡”

function orderemail() {
    var sh = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    var data = sh.getRange("A2:O38").getValues();
    //var htmltable =[];
    var TABLEFORMAT = 'cellspacing="2" cellpadding="2" dir="ltr" border="1" style="width:100%;table-layout:fixed;font-size:10pt;font-family:arial,sans,sans-serif;border-collapse:collapse;border:1px solid #ccc;font-weight:normal;color:black;background-color:white;text-align:center;text-decoration:none;font-style:normal;'
    var htmltable = '<table ' + TABLEFORMAT +' ">';
        for (row = 0; row<data.length; row++){
           htmltable += '<tr>';
           for (col = 0 ;col<data[row].length; col++){
              if (data[row][col] === "" || 0) {
                  htmltable += '<td>' + 'None' + '</td>';} 
              else if (row === 0)  {
                  htmltable += '<th>' + data[row][col] + '</th>';
              }
              else {htmltable += '<td>' + data[row][col] + '</td>';}
           }
        htmltable += '</tr>';
     }
     htmltable += '</table>';
     Logger.log(data);
     Logger.log(htmltable);

     var emailAddress = "chhedapriyank@gmail.com";
     var emailAddress2location = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Order tab").getRange("C25");
     var emailAddress2 = emailAddress2location.getValues();

     // Send Alert Email.
     var order = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Order tab").getRange("A2:K32");
     var message = order.getValues();
     var subject = 'New Order Alert';
     var subject2 = 'Order Summary';
     MailApp.sendEmail(emailAddress, subject, {htmlBody: htmltable})
     MailApp.sendEmail(emailAddress2, subject2, {htmlBody: htmltable})
     var reset = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Order tab").getRange("b3:j22");

     reset.clearContent();
     var reset2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Order tab").getRange("c25");
     reset2.clearContent();
}

如果我很好理解文檔https://developers.google.com/apps-script/reference/mail/mail-app

您不必傳遞 object 作為 MailApp.sendEmail 的正文參數,而是直接傳遞您的 text/html

所以在這些行中用htmltable替換{htmlBody: htmltable}

...
     MailApp.sendEmail(emailAddress, subject, htmltable)
     MailApp.sendEmail(emailAddress2, subject2, htmltable)
...

編輯

您需要在提供選項 object 之前提供文本正文,

sendEmail(收件人、主題、正文、選項)

你對語法是正確的,但你之前需要一個文本。 你可以試試這個來測試它:

...
     MailApp.sendEmail(emailAddress, subject, htmltable, {htmlBody: htmltable})
     MailApp.sendEmail(emailAddress2, subject2, htmltable,{htmlBody: htmltable})
...

但我建議您創建數據的文本版本,如果可行,將其作為文本正文傳遞

回答您的進一步問題(來自評論)

1 如果您不希望空白為“無”,則應刪除此部分

    var htmltable = '<table ' + TABLEFORMAT +' ">';
        for (row = 0; row<data.length; row++){
           htmltable += '<tr>';
           for (col = 0 ;col<data[row].length; col++){
              //remove this part ------------
              //if (data[row][col] === "" || 0) {
              //    htmltable += '<td>' + 'None' + '</td>';} 
              //else --------------
              if (row === 0)  {
                  htmltable += '<th>' + data[row][col] + '</th>';
              }
              else {htmltable += '<td>' + data[row][col] + '</td>';}
           }
        htmltable += '</tr>';
     }

2 - 試試這個

...

     // Send Alert Email.
     var order = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Order tab").getRange("A2:K32");
     var message = order.getValues();
     //---------------------- this :
     var customerId = SpreadsheetApp.getActiveSpreadsheet()
       .getSheetByName("Order tab").getRange("c24")
       .getValues()[0];
     var subject = 'New Order Alert - ' + customerId;
     var subject2 = 'Order Summary - ' + customerId;
...
```

暫無
暫無

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

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