邮寄电子表格数据

时间:2014-04-03 17:55:47

标签: google-apps-script gmail google-spreadsheet-api

我想向包含从电子表格中提取的表格和图表的人员列表发送电子邮件。

手动操作很简单 - 将范围复制到剪贴板,粘贴到消息编辑器中。与图表类似。但是,我的应用程序需要多个图表和范围,这使得流程耗时且容易出错。

我尝试按如下方式构建消息:

function makeMail(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var dataTable = ss.getSheetByName("calc")
                    .getRange("B116:I125")
                    .getDataTable(true);
  var sData = ss.getSheetByName("Results")                    
                .getRange("A5:F22")
                .getValues();

  var chartImage = Charts.newLineChart()
                      .setTitle('Top Teams')
                      .setDataTable(dataTable)
                      .build()
                      .getAs('image/png'); //get chart as image

  var mB = "<h2> Testing Mail </h2>";
  mB +=  "<style> table,th,td { border:1px solid black;} </style>";
  mB +=  " <table> <tr> <th>Team Name</th> <th> Owners </th> <th>This Week$</th>"
  mB +=  " <th>Rank</th><th>YTD pts</th><th>YTD Rank</th></tr></tr>";
  for (var i=0;i<6;i++){
    mB += "<td> " + sData[2][i] + "</td>";
    mB += "</tr>";
  } 
  mB += "</table>";
MailApp.sendEmail({
  to: "xyzzy@gmail.com",
  subject: "Chart",
  htmlBody: mB,
  inlineImages:{
  chartImg: chartImage
  }
 });  
}

他的方法的主要问题是执行这样一个简单任务的代码的复杂性,并且邮件呈现HTML的方式似乎存在问题 - 表的样式标记没有效果。 / p>

有没有更好的方法来解决这个问题。

1 个答案:

答案 0 :(得分:1)

除了评论中已经提到的样式之外,您还可以通过在图纸中使用预先创建的图表来加快速度,并在需要时更改范围。 您还可以使用命名范围,通过编辑电子表格中的范围而不是修改代码,使其更易于阅读和维护。