我是Google编码脚本的新手,遇到了无法解决的问题,我的脚本“ mentor”仍然没有那么丰富的经验,也无法解决。
当我使用脚本发送大量电子邮件时,我正在尝试从数据透视表更新工作表上的其他标签。
因此,下面的链接将带您进入以我的真实图纸为基础的虚拟图纸。 “ PM”标签列L是我要更新的内容。它在所有作业上都从1开始。电子邮件是通过下一个标签“跟进电子邮件”中的蓝色按钮发送的(这只是一个数据透视表,因此我可以随时调整谁可以轻松获取电子邮件)。但是我不知道如何在电子邮件发送出去的同时用按钮更新“ PM”标签。
链接到打开的共享电子表格。如果可以帮助的话,请随时玩。
https://docs.google.com/spreadsheets/d/1_hipIj4suI2xMGUrZhMTBDvkQv9Y9O3JRNNQUpSeAP0/edit?usp=sharing
(到目前为止,只有电子邮件能够正确发送)
function sendEmails() {
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2; // First row of data to process
var rows = sheet.getLastRow()
var dataRange = sheet.getRange(2, 1, rows-1, 7);
// Fetch values for each row in the Range.
var data = dataRange.getValues();
for (i in data) {
var row = data[i];
var emailAddress = row[1]; // Second column
var message = 'Hello, we have submitted this job ' + row[2] + ' days Ago. ' + row[4] + ' \n\n' + ' -' + row[5];
var subject = row[0]; // First column
MailApp.sendEmail(emailAddress, subject, message);
}
}
我需要在“关注电子邮件”选项卡上发送电子邮件的按钮,与此同时,“电子邮件计数器”(L列)将在“ PM”选项卡上添加1。通过这种方式,我可以跟踪工作表中通过电子邮件发送了多少次。
答案 0 :(得分:0)
尝试以下代码:
function sendEmails() {
var pmSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("PM");
var emailSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Follow up email");
var startRow = 2; // First row of data to process
var rows = emailSheet.getLastRow()
var dataRange = emailSheet.getRange(2, 1, rows-1, 7);
// Fetch values for each row in the Range.
var data = dataRange.getValues();
for (i in data) {
var row = data[i];
var emailAddress = row[1]; // Second column
var message = 'Hello, we have submitted this job ' + row[2] + ' days Ago. ' + row[4] + ' \n\n' + ' -' + row[5];
var subject = row[0]; // First column
MailApp.sendEmail(emailAddress, subject, message);
updatePM(pmSheet, emailAddress);
}
}
function updatePM(sheet, email){
var value;
var emails = sheet.getRange("G3:G" + sheet.getLastRow()).getValues();
for (var i = 0; i < emails.length; i++)
if (emails[i][0] == email){
value = sheet.getRange("K" + (i+3)).getValue() + 1
sheet.getRange("K" + (i+3)).setValue(value);
}
}
为了安全起见,我更改了获取工作表的方式,然后我编写了一个小函数,该函数在发送电子邮件后被调用,该函数检查PM工作表中的电子邮件列表,然后更新已发送表中的值电子邮件列。