我目前正在尝试编写一个谷歌脚本,每次在谷歌工作表上编辑特定列时,该脚本都会向我发送一封电子邮件。
该电子表格的标题是";销售;并且标签是";RO";。D到H列将不定期地用信息进行编辑,这就是为什么我想尝试设置一个电子邮件通知,在进行编辑时提醒我。
显示的错误消息
异常:参数(String(与SpreadsheetApp.getActiveSpreadsheet.的方法签名不匹配
当我尝试运行代码时出现
这是代码:
function sendMailEdit(e){
var ss = SpreadsheetApp.getActiveSpreadsheet("Sales").getSheetByName("RO");
if (be.range.columnStart != 3 || e.value != "Rollover") return;
const rData = e.source.getActiveSheet().getRange(e.range.rowStart,4,1,5).getValue();
let n = rData[0][4];
let d = new Date(rData[0][3]).toLocaleDateString("en-US");
let amo = rData[0][7];
let msg = "Account ID " + n + " (" + d + ") Request Date " + "Transfer Amount " + amo;
Logger.log(msg);
GmailApp.sendEmail("xxx@gmail.com", "New Sale", msg)
}
要修复错误消息,请删除
var ss = SpreadsheetApp.getActiveSpreadsheet("Sales").getSheetByName("RO");
因为不使用CCD_ 1。
同时更换
be.range.columnStart
通过(删除b
(
e.range.columnStart
并替换
const rData = e.source.getActiveSheet().getRange(e.range.rowStart,4,1,5).getValue();
通过(添加s
/使用getValues()
而不是getValue()
(
const rData = e.source.getActiveSheet().getRange(e.range.rowStart,4,1,5).getValues();
因为看起来这些行有打字错误。
如果您的脚本绑定到电子表格,则不必提及Sales
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("RO")
编辑:由于脚本中没有使用ss,请尝试
function sendMailEdit(e) {
if (e.range.columnStart != 3 || e.value != "ROLLOVER" || e.source.getActiveSheet().getName() != 'RO') return;
const rData = e.source.getActiveSheet().getRange(e.range.rowStart, 4, 1, 5).getValues();
let n = rData[0][4];
let d = new Date(rData[0][3]).toLocaleDateString("en-US");
let amo = rData[0][7]; let msg = "Account ID " + n + " (" + d + ") Request Date " + "Transfer Amount " + amo; Logger.log(msg);
GmailApp.sendEmail("xxx@gmail.com", "New Sales", msg)
}