javascript - Google Apps 脚本根据 if 语句更新特定单元格
问题描述
目前,我的脚本正在使用“是”更新所选范围内的所有单元格,但我只希望它更新满足 if 条件的单元格。任何帮助将非常感激。
//Active spreadsheet var that can be used anywhere in the programme
var ss = SpreadsheetApp.getActiveSpreadsheet();
// Get and check if there is an email address
function checkSendEmailAdd () {
//Getting the array of values
var activeSheet = ss.getActiveSheet();
var emailCol = activeSheet.getRange(2, 9, activeSheet.getLastRow() - 1, 2).getValues();
//Looping over the array of values
emailCol.forEach(function(val){
var email = val[0].toLowerCase();
var sentEmail = val[1];
//If the send date column is empty and the email column has a @ within the string an email will be sent
if (email.indexOf("@") !== -1 && sentEmail == ""){
//Email contents
var subject = "Survey";
var body = "Hi" + "<br><br>" +
"Testing 123";
GmailApp.sendEmail(email, subject, "", { htmlBody: body } );
//Update and set a new value in the sent email column
var newSetValue = "YES";
var updateSentEmail = activeSheet.getRange(2, 10, activeSheet.getLastRow() - 1, 1).setValue(newSetValue);
} else {
}
});
我面临的问题是已发送列正在更新每个单元格,但我只希望它更新在电子邮件列中有电子邮件的单元格。
解决方案
试试这种方式:
我试图从您的问题中确定列。我相信电子邮件是第一列,sentMail 是第二列,但如果我错了,您可以将它们更改为您需要的任何内容。
function sendEmail() {
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Sheet0');
var vA=sh.getRange(2,1,sh.getLastRow()-1,sh.getLastColumn()).getValues();
var sentA=sh.getRange(2,2,sh.getLastRow()-1,1).getValues();
var html='';
for(var i=0;i<vA.length;i++) {
var email=vA[i][0].toString().trim().toLowerCase();
var sentEmail=vA[i][1];
if(email && email.indexOf("@")>-1 && !sentEmail){
var subject = "Survey";
var body = "Hi<br><br>Testing 123";
//GmailApp.sendEmail(email, subject, "", { htmlBody: body } );
html+=Utilities.formatString('<br />%s -<br />Email: %s<br />Subject: %s<br />Body: %s<br /><hr/>', Number(i+1),email,subject,body);
sentA[i][0]="Yes";
}
}
sh.getRange(2,2,sh.getLastRow()-1,1).setValues(sentA);
var userInterface=HtmlService.createHtmlOutput(html);
SpreadsheetApp.getUi().showModelessDialog(userInterface, 'Emails Sent');
}
发送前的电子表格:
发送后的电子表格:
我删除了 Gmail 行并使用对话框显示电子邮件:
推荐阅读
- php - 如何使用 pdo 连接到 mysql
- ruby-on-rails - 使用部分渲染表单集合
- html - How to fix the relative paths in action attribute in form tag (html)
- c# - Adobe Reader 无法识别 iText 7 文本水印注释 - 无法编辑的文本
- c++ - glDrawElements 可以独立于多边形类型使用吗?
- matplotlib - Matplotlib 图的默认宽度和高度
- lua - Unable to load Lua Scripts to NodeMCU: Invalid node.chipid()
- c - 非常简单的普通 C 非负整数解析器的非常奇怪的行为
- javascript - 在 Puppeteer 中使用 page.$eval() 时如何将变量放入浏览器上下文中?
- swift - 在swift的代码中修改高度约束后,UILabel不显示全文