以下是我放在一起的功能,我想根据Google工作表中的单元格内容触发4种不同的电子邮件功能。但它似乎不起作用。只是想知道是否有人可以帮助我并告诉我哪里出错了?
function emailAlerts() {
var sheet = SpreadsheetApp.getActiveSheet();
var activerow = sheet.getActiveRange().getRow();
var startRow = activerow; // First row of data to process
var numRows = 1; // Number of rows to process
// Fetch the range of cells
var dataRange = sheet.getRange(startRow, 1, numRows, 44)
// Fetch values for each row in the Range.
var data = dataRange.getValues();
for (var i = 0; i < data.length; ++i) {
var row = data[i];
var checkdata = sheet.getRange(startRow + i, 43).getValue(); // Email Alerts column
if (checkdata.indexOf("Engineering") > -1) {
sendEngineeringEmails();
}
if (checkdata.indexOf("Cleaners") > -1) {
sendCleanersEmails();
}
if (checkdata.indexOf("Advertising") > -1) {
sendAdvertisingEmails();
}
if (checkdata.indexOf("Management") > -1) {
sendManagementEmails();
}
}
}
包含数据的单元格可能在一行中格式化为
Engineering, Cleaners, Advertising, Management
并在另一行中像这样
Cleaners, Advertising
或者在另一行上喜欢这个
Engineering, Management
我需要搜索数据以找到所需字符串的匹配项,以便能够触发相关的电子邮件功能。电子邮件功能都可以自行完成,但我遇到了使用这个新功能自动化问题的问题,以便发送正确的电子邮件。我需要它能够发送到一个电子邮件功能或在某些情况下所有4个电子邮件功能基于提交到每行上包含单元格的数据的内容(此数据来自Google表单并基于表单的清单类型表单用户可以从列表中选择选项的问题
非常感谢任何帮助:)
答案 0 :(得分:0)
假设您有以下表格中的数据
然后你的代码应该是这样的。检查评论代码
function emailAlerts()
{
//INSTEAD OF THIS TRY THE CODE BELOW USING "openById" & "getSheetByName" METHODS.
// var sheet = SpreadsheetApp.getActiveSheet();
// var activerow = sheet.getActiveRange().getRow();
//IS THERE A PARTICULAR REASON FOR USING TWO DIFFERENT VARIABLES WITH SAME VALUES
// var startRow = activerow; // First row of data to process
// var numRows = 1; // Number of rows to process
//COULD BE DONE IN ONE LINE
// var dataRange = sheet.getRange(startRow, 1, numRows, 44)
// var data = dataRange.getValues();
var sheet = SpreadsheetApp.openById("1BZuYFCnN_g9vn5crxbPeYlhUKwH6N3u0uT8LCmm-neM").getSheetByName("Sheet1");
var numRows = sheet.getLastRow(); // Number of rows to process
var data = sheet.getRange(1, 1, numRows, 1).getValues();
for (var i = 0; i < data.length; ++i)
{
var row = data[i].toString();
//NEVER CALL APIS IN FOR LOOP, IT CAN HAVE DRASTIC EFFECT ON PERFORMANCE
//var checkdata = sheet.getRange(startRow + i, 43).getValue();
Logger.log("Index: "+i)
if (row.indexOf("Engineering") > -1)
{
Logger.log("sendEngineeringEmails()");
}
if (row.indexOf("Cleaners") > -1)
{
Logger.log("sendCleanersEmails()");
}
if (row.indexOf("Advertising") > -1)
{
Logger.log("sendAdvertisingEmails()");
}
if (row.indexOf("Management") > -1)
{
Logger.log("sendManagementEmails()");
}
}
}