我正在为Google工作表的列中的费率列表创建身份验证模块。 我在c栏中有一个原始费率(oRate)列表。我在b栏中有实际售价。每个销售率(sRate)记录在b栏中。脚本应该将b列中的销售率与c列中的原始费率列表进行比较,如果任何值不相等,它应该在d列中记录,“相等”或“不相等”,我应该收到一条警报邮件,对于每个“不相等”的条目,提及产品名称与费率不匹配。 (名称用colA写成)。我写过部分剧本,但不满意。
数据格式
A B C D E F ...
1 name oRate sRate is equal?
2 item1 10 10 equal
3 item2 30 28 not equal
.
n
A部分 - 跟踪变更
function trackChange() {
var s = SpreadsheetApp.getActiveSheet();
if( s.getName() == "Auth" ) { //checks that we're on the correct sheet
var orate = s.getActiveCell();
if( orate.getColumn() == 2 ) { //checks the column
var srate = r.offset(0, 1);
if( srate.getValue() != orate.getValue() ) //is it equal?
var auth = 'not equal';
var authCell = srate.offset(0,1);
authCell.setValue(auth);
};
};
}
使用时间限制触发器设置。但它永远不会编辑表格。
B部分 - 发送邮件
function sendMail() {
if (SpreadsheetApp.getActive().getSheetByName('Auth').getRange('E2:E676').getValue()== 'not equal') return;
MailApp.sendEmail("abc@xyz.com", "URGENT: AUTHORIZE CHANGE OF sale price", "mail body", {
name: "abc"
});
即使所有单元格相同,它也会每分钟发送一封邮件。我无法弄清楚如何从colA添加产品名称。 请帮助!
答案 0 :(得分:0)
尝试使用此代码:
function checkEqual(){
var source = SpreadsheetApp.openById("fileID")
var sheet = source.getSheetByName("Sheet2");
var data = sheet.getDataRange().getValues();
for (var i=1; i<data.length; i++){
//first column will be empty for results
var first = data[i][1];
var second = data[i][2];
Logger.log(first + " " +second)
if(first == second){
var cell = sheet.getRange(i+1,4);
cell.setValue("equal")
//emailOwner();
var cell2 = sheet.getRange(i+1,5);
cell2.setValue("emailed")
}
else{
}
}
}
function emailOwner(){
//email code
}
这可以帮助您检查列是否相等,如果不相同则发送电子邮件。
希望这有帮助。