为了账号安全,请及时绑定邮箱和手机立即绑定

使用应用程序脚本从谷歌表格通过电子邮件发送表格 - 单击按钮

使用应用程序脚本从谷歌表格通过电子邮件发送表格 - 单击按钮

守候你守候我 2022-01-07 16:15:30
我是编码新手。这是我的第一个查询。请原谅我的错误。我想开发一个简单的代码来接受客户的订单。在附件中 - 客户将选择他们的产品,摘要电子邮件应发送至客户的电子邮件 ID 和管理员电子邮件 ID。电子邮件的主题行正确,但电子邮件正文不正确。电子邮件正文是 - [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();}
查看完整描述

2 回答

?
largeQ

TA贡献2039条经验 获得超8个赞

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


您不必将对象作为MailApp.sendEmail的正文参数传递,而是直接传递您的 text/html


所以在这些行中替换{htmlBody: htmltable}为htmltable:


...

     MailApp.sendEmail(emailAddress, subject, htmltable)

     MailApp.sendEmail(emailAddress2, subject2, htmltable)

...

编辑


您需要在提供选项对象之前提供文本正文,


sendEmail(收件人、主题、正文、选项)


你对语法是正确的,但你之前需要一个文本。你可以试试这个来测试它:


...

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

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

...

但我建议您创建数据的文本版本,如果可行,将其作为文本正文传递


查看完整回答
反对 回复 2022-01-07
?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

回答您的进一步问题(来自评论)


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;

...

```


查看完整回答
反对 回复 2022-01-07
  • 2 回答
  • 0 关注
  • 197 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号