Google表格自动电子邮件脚本

时间:2016-02-10 17:42:01

标签: google-apps-script google-sheets google-docs google-spreadsheet-api

所有人的好日子

我这里有脚本,我不太了解编写函数。我设法让frankenstein找到了一些我发现它可以运行的脚本。它适用于一个功能,但你会看到我需要它来完成所有3张纸,当我复制该功能时,我得到了太多的触发错误。

我在这个doc中有4张纸,一个控件(Master),然后从那里拉出数据(AZ,CA,NH)。

然后我有一个从该数据中提取随机线的公式。在3页(AZ,CA,NH)的每一页上,我都会生成随机库存零件周期计数列表。

我收到了电子邮件的工作,然后我通过在我的公式中添加= today()和if语句以使其在编辑时重新计算来做一个解决方法。并获得编辑工作簿的脚本(替换单元格(G1)内容)。效果很好。

这是问题所在。我可以将其压缩成一个功能吗?页面(AZ,CA,NH)的相同内容,相同的行数和列数以及相同的数据位置。这是我的代码。

*看起来我的代码或其他东西空间不足。我基本上重复了这两次,并将工作表名称更改为“CA”& “NH”函数和触发器发送到email_ca()& email_nh()以及myRecalculate()

//AZ Script

function email() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var bulk = ss.getSheetByName("AZ");
  var lastrow = bulk.getLastRow();

  var data1 = bulk.getRange(6, 7, lastrow).getValues(); // part number column

  var report = ""
  var email ="";
  for(var i in data1){
    if(data1[i]!="") email += "<tr><td style='padding:5px'>" + data1[i];
  }

  report ="<table><tr><th>Part Number</th></tr>" + email + "</table>";

  MailApp.sendEmail(Session.getActiveUser().getEmail(),
                "Cycle Count", report, {htmlBody: report});
}

 ScriptApp.newTrigger("email")
   .timeBased()
   .onWeekDay(ScriptApp.WeekDay.THURSDAY)
   .create();

function myRecalculate() { 

// The code below opens a spreadsheet using its ID 
// Note that the spreadsheet is NOT physically opened on the client side. 
// It is opened on the server only (for modification by the script). 
var ss = SpreadsheetApp.openById("13SAt0XQgHQz1JRhXyvwbL6ASfnlLjvFXJQsHfYRM1nE"); 
var sheet = ss.getSheetByName("AZ"); 
var cell = sheet.getRange('G1') 

cell.setValue("Randomizer!!!") 
}

 ScriptApp.newTrigger("myRecalculate")
   .timeBased()
   .onWeekDay(ScriptApp.WeekDay.WEDNESDAY)
   .create();

1 个答案:

答案 0 :(得分:0)

想通了。

//AZ Script

function email() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var az = ss.getSheetByName("AZ");
  var lastrow = az.getLastRow();

  var data1 = az.getRange(2, 7, lastrow).getValues(); // part number column

  var ca = ss.getSheetByName("CA");
  var lastrow_ca = ca.getLastRow();

  var data2 = ca.getRange(2, 7, lastrow_ca).getValues(); // part number column

  var nh = ss.getSheetByName("NH");
  var lastrow_nh = nh.getLastRow();

  var data3 = nh.getRange(2, 7, lastrow_nh).getValues(); // part number column

  var report = ""
  var email ="";
  for(var i in data1){
    if(data1[i]!="") email += "<tr><td style='padding:5px'>" + data1[i] + "</td><td style='padding:5px'>" + data2[i] + "</td><td style='padding:5px'>" + data3[i] + "</td></tr>";
  }

  report = "<table style='width:100%'><tr bgcolor='#f1f1f1' style='padding:5px'><th>PHX Lotto</th><th>CA Lotto</th><th>NH Lotto</th></tr><tr>" + email + "</tr></table>";

  MailApp.sendEmail(Session.getActiveUser().getEmail(),
                "Cycle Count", report, {htmlBody: report});
}