如果 sheet 中的导入数据发生变化,则通过电子邮件通知。 [触发器不起作用]
Email Notification if the IMPORTED DATA in sheet changes. [Triggers not working]
我不知道GAS,我试着搜索了很多代码,找到了一个非常接近的代码。
我希望在当前 sheet 中的数据发生变化时收到电子邮件通知。 现在,当我进行更改时,我会收到一封电子邮件。这很好 ,但实际上我不会对 sheet 进行更改,因为数据是从另一个 sheet/website
导入的
基本上我想
- 当导入的数据发生变化时收到通知。没有人会编辑这个。
- 用电子邮件附加永久 Excel sheet
- 在电子邮件末尾,受影响的总行数 = +-4
虚拟 Sheet:https://docs.google.com/spreadsheets/d/1BTdA7Rx16W6la_gri4uP079yIzzgKfZKO610yfQ6724/edit?usp=sharing [触发器无法处理导入的数据]
当前脚本:
function sendNotification() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var cell = ss.getActiveCell().getA1Notation();
var row = sheet.getActiveRange().getRow();
var cellvalue = ss.getActiveCell().getValue().toString();
var to = "ashwendra10625@gmail.com";
var message = '\n\nSignature';
if(cell.indexOf('G')!=-1){
message = sheet.getRange('D'+ sheet.getActiveCell().getRowIndex()).getValue()
}
var subject = 'Data Updated';
var body = 'Hi there,\n\nThe data on website was updated recently.\n\nKindly refresh the previous excel sheet or click ' + 'https://docs.google.com/spreadsheets/d/1BTdA7Rx16W6la_gri4uP079yIzzgKfZKO610yfQ6724/edit#gid=0' + ' to see changes.\n\n\nThe changes are:\nTotal Rows affected: ' + row + '\n' + message;
MailApp.sendEmail(to, subject, body);
};
继 cooper 的想法之后:
使用属性服务将数据长度的值存储在col A中(例如)。创建一个基于时间的触发器以每 X 分钟检查一次 sheet。如果数据发生变化,则使用新值更新 属性 并发送电子邮件。
根据您的数据,您可以选择要测试的任何范围,或者如果您有时间戳,您可以更改代码以测试时间的变化。
function onEdit() {
var getProps = PropertiesService.getUserProperties();
var lenProp = getProps.getProperty('Len');
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('-------');
var data = sheet.getRange('A1:A').getValues().toString().length;
if (data != lenProp) {
getProps.setProperty('Len', data);
MailApp.sendEmail('-------------', 'Sheet Has Changed', 'Previous value: ' + lenProp + ' New value: ' + data);
}
}
我不知道GAS,我试着搜索了很多代码,找到了一个非常接近的代码。
我希望在当前 sheet 中的数据发生变化时收到电子邮件通知。 现在,当我进行更改时,我会收到一封电子邮件。这很好 ,但实际上我不会对 sheet 进行更改,因为数据是从另一个 sheet/website
导入的基本上我想
- 当导入的数据发生变化时收到通知。没有人会编辑这个。
- 用电子邮件附加永久 Excel sheet
- 在电子邮件末尾,受影响的总行数 = +-4
虚拟 Sheet:https://docs.google.com/spreadsheets/d/1BTdA7Rx16W6la_gri4uP079yIzzgKfZKO610yfQ6724/edit?usp=sharing [触发器无法处理导入的数据]
当前脚本:
function sendNotification() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var cell = ss.getActiveCell().getA1Notation();
var row = sheet.getActiveRange().getRow();
var cellvalue = ss.getActiveCell().getValue().toString();
var to = "ashwendra10625@gmail.com";
var message = '\n\nSignature';
if(cell.indexOf('G')!=-1){
message = sheet.getRange('D'+ sheet.getActiveCell().getRowIndex()).getValue()
}
var subject = 'Data Updated';
var body = 'Hi there,\n\nThe data on website was updated recently.\n\nKindly refresh the previous excel sheet or click ' + 'https://docs.google.com/spreadsheets/d/1BTdA7Rx16W6la_gri4uP079yIzzgKfZKO610yfQ6724/edit#gid=0' + ' to see changes.\n\n\nThe changes are:\nTotal Rows affected: ' + row + '\n' + message;
MailApp.sendEmail(to, subject, body);
};
继 cooper 的想法之后:
使用属性服务将数据长度的值存储在col A中(例如)。创建一个基于时间的触发器以每 X 分钟检查一次 sheet。如果数据发生变化,则使用新值更新 属性 并发送电子邮件。
根据您的数据,您可以选择要测试的任何范围,或者如果您有时间戳,您可以更改代码以测试时间的变化。
function onEdit() {
var getProps = PropertiesService.getUserProperties();
var lenProp = getProps.getProperty('Len');
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('-------');
var data = sheet.getRange('A1:A').getValues().toString().length;
if (data != lenProp) {
getProps.setProperty('Len', data);
MailApp.sendEmail('-------------', 'Sheet Has Changed', 'Previous value: ' + lenProp + ' New value: ' + data);
}
}