Javascript 谷歌应用程序失败摘要脚本:订阅更改的副本供查看者使用-我每分钟收到一次通知
我每天每分钟都会收到错误通知,如下所示 /****************************************************************** 您的脚本“为观众订阅更改:衣服和配饰”最近未能成功完成。故障摘要如下所示。要为此脚本配置触发器,或更改接收未来故障通知的设置,请单击此处 该脚本由文档使用,用于为查看者订阅更改:衣服和附件 详情: 启动功能错误消息触发器结束 2012年6月28日晚上9:08发送变更需要授权才能执行该操作。基于时间的2012年6月28日晚上9:08 真诚地 谷歌应用程序脚本 需要帮助吗?访问谷歌应用程序脚本文档。请不要回复此邮件。(c) 2012年谷歌 ***************************************************************/ 这是该错误的相关代码 /***************************************************************************Javascript 谷歌应用程序失败摘要脚本:订阅更改的副本供查看者使用-我每分钟收到一次通知,javascript,google-apps-script,Javascript,Google Apps Script,我每天每分钟都会收到错误通知,如下所示 /****************************************************************** 您的脚本“为观众订阅更改:衣服和配饰”最近未能成功完成。故障摘要如下所示。要为此脚本配置触发器,或更改接收未来故障通知的设置,请单击此处 该脚本由文档使用,用于为查看者订阅更改:衣服和附件 详情: 启动功能错误消息触发器结束 2012年6月28日晚上9:08发送变更需要授权才能执行该操作。基于时间的2012年6月28日晚上
var ss = SpreadsheetApp.getActiveSpreadsheet();
function send_changes() {
var current_time = new Date();
var last_check = ScriptProperties.getProperty("last_check");
if (last_check == null) {
last_check = current_time;
ScriptProperties.setProperty("last_check", last_check);
}
var updates = '';
var url = ss.getSheetByName('Dashboard').getRange('C5').getValue();
var when = ss.getSheetByName('Dashboard').getRange('C8').getValue();
var scope = ss.getSheetByName('Dashboard').getRange('C3').getValue();
if (scope == 'Site') {
var site = SitesApp.getSiteByUrl(url);
var descendants = site.getAllDescendants();
for (var j = 0; j < descendants.length; j++) {
var updates = getInfo_(descendants[j], updates, last_check, when);
}
}
else if (scope == 'Page and all subpages') {
var page = SitesApp.getPageByUrl(url);
var descendants = page.getAllDescendants();
for (var j = 0; j < descendants.length; j++) {
var updates = getInfo_(descendants[j], updates, last_check, when);
}
}
else {
var page = SitesApp.getPageByUrl(url);
var updates = getInfo_(page, updates, last_check, when);
}
if (updates != "") {
updates = updates.replace(/<td>/g, "<td style=\"border: 1px solid grey; padding: 7px;\">");
updates = updates.replace(/<th>/g, "<th colspan=2 BGCOLOR='#0066cc' style=\"border: 1px solid grey; padding: 10px; text-align: left; color: white; font-size: 1.1em;\">");
updates = updates.replace(/<table>/g, "<table style=\"width: 700px; border-collapse: collapse;\">");
// Remove duplicates, remove people who have unsubscribed, remove false email addresses
var mailing = scrubData_();
var subject = ss.getSheetByName('Dashboard').getRange('G5').getValue();
///////////////////////////////////////////////////////////////////////////////////
// If the number of updates is too important, send those updates as attachment
///////////////////////////////////////////////////////////////////////////////////
if (updates.length * 2 > 19800) {
var body = ss.getSheetByName('Dashboard').getRange('G7').getValue() + "<br><br>";
body += "*** You can find those updates in attachment. ***";
body += "<br><br><a href=\"" + ss.getFormUrl() + "\">Unsubscribe</a>";
}
else {
var body = ss.getSheetByName('Dashboard').getRange('G7').getValue() + "<br><br>" + updates;
body += "<br><br><a href=\"" + ss.getFormUrl() + "\">Unsubscribe</a>";
}
////////////////////
// Batch emails
////////////////////
for (var j = 0; j < mailing.length; j = j + 30) {
var bcc = "";
for (var k = j; k < j + 30; k++) {
if (k < mailing.length && mailing[k][1] != "") {
bcc += mailing[k][1] + ",";
}
}
if (updates.length * 2 > 19800) {
MailApp.sendEmail('notify@google.com', subject, body, {
bcc: bcc,
htmlBody: body,
attachments: [Utilities.newBlob(updates, "text/html", "Updates")]
});
}
else {
MailApp.sendEmail('notify@google.com', subject, body, {
bcc: bcc,
htmlBody: body
});
}
}
var emails_sent = ss.getSheetByName('Dashboard').getRange('G17').getValue();
ss.getSheetByName('Dashboard').getRange('G17').setValue(emails_sent + 1);
}
ScriptProperties.setProperty("last_check", current_time);
}
function getInfo_(page, updates, last_check, when) {
var type = page.getPageType();
switch (type.toString()) {
case 'AnnouncementsPage':
var newsfeed = page.getAnnouncements();
for (var j = 0; j < newsfeed.length; j++) {
if (chooseWhen_(newsfeed[j], when) > new Date(last_check).getTime()) {
updates += "<table><tr><th>" + newsfeed[j].getTitle() + "</th></tr>";
updates += "<tr><td style=\"border: 1px solid grey; padding: 7px; width: 100px;\">Blog </td><td>" + page.getTitle() + "</td></tr>";
updates += "<tr><td style=\"border: 1px solid grey; padding: 7px; width: 100px;\">Preview </td><td style=\"color: grey; font-style: italic; border: 1px solid grey; padding: 7px;\">" + newsfeed[j].getTextContent().substr(0, 280) + "...</td></tr>";
updates += "<tr><td style=\"border: 1px solid grey; padding: 7px; width: 100px;\">Link </td><td><a href=\"" + newsfeed[j].getUrl() + "\">Link</a></td></tr></table><br>";
}
}
break;
case 'FileCabinetPage':
var attachments = page.getAttachments();
for (var j = 0; j < attachments.length; j++) {
if (chooseWhen_(attachments[j], when) > new Date(last_check).getTime()) {
updates += "<table><tr><th>" + attachments[j].getTitle() + "</th></tr>";
updates += "<tr><td style=\"border: 1px solid grey; padding: 7px; width: 100px;\">Type </td><td>Attachment</td></tr>";
updates += "<tr><td style=\"border: 1px solid grey; padding: 7px; width: 100px;\">Description </td><td>" + attachments[j].getDescription() + "</td></tr>";
updates += "<tr><td style=\"border: 1px solid grey; padding: 7px; width: 100px;\">Page </td><td>" + page.getTitle(); + "</td></tr>";
updates += "<tr><td style=\"border: 1px solid grey; padding: 7px; width: 100px;\">Link </td><td><a href=\"" + page.getUrl() + "\">Link</a></td></tr></table><br>";
}
}
break;
case 'ListPage':
var listItems = page.getListItems();
var listUpdated = false;
for (var j = 0; j < listItems.length; j++) {
if (chooseWhen_(listItems[j], when) > new Date(last_check).getTime()) {
listUpdated = true;
}
}
if (listUpdated) {
updates += "<table><tr><th>" + page.getTitle() + "</th></tr>";
updates += "<tr><td style=\"border: 1px solid grey; padding: 7px; width: 100px;\">List </td><td style=\"color: grey; font-style: italic; border: 1px solid grey; padding: 7px;\">New item added</td></tr>";
updates += "<tr><td style=\"border: 1px solid grey; padding: 7px; width: 100px;\">Link </td><td><a href=\"" + page.getUrl() + "\">Link</a></td></tr></table><br>";
}
break;
case 'WebPage':
if (chooseWhen_(page, when) > new Date(last_check).getTime()) {
updates += "<table><tr><th>" + page.getTitle() + "</th></tr>";
updates += "<tr><td style=\"border: 1px solid grey; padding: 7px; width: 100px;\">Preview </td><td style=\"color: grey; font-style: italic; border: 1px solid grey; padding: 7px;\">" + page.getTextContent().substr(0, 280) + "...</td></tr>";
updates += "<tr><td style=\"border: 1px solid grey; padding: 7px; width: 100px;\">Link </td><td><a href=\"" + page.getUrl() + "\">Link</a></td></tr></table><br>";
}
break;
}
return updates;
}
function chooseWhen_(item, when) {
var time = 0;
if (when == 'Item is updated') {
time = item.getLastUpdated().getTime();
}
else {
time = item.getDatePublished().getTime();
}
return time;
}
var ss=SpreadsheetApp.getActiveSpreadsheet();
函数send_changes(){
var current_time=新日期();
var last_check=ScriptProperties.getProperty(“last_check”);
如果(上次检查==null){
上次检查=当前检查时间;
setProperty(“上次检查”,上次检查);
}
var更新=“”;
var url=ss.getSheetByName('Dashboard').getRange('C5').getValue();
var when=ss.getSheetByName('Dashboard').getRange('C8').getValue();
var scope=ss.getSheetByName('Dashboard').getRange('C3').getValue();
如果(范围=‘站点’){
var site=SitesApp.getSiteByUrl(url);
var substands=site.getAllSubstands();
对于(var j=0;j<0.length;j++){
var updates=getInfo_u(子体[j],更新,最后一次检查,何时);
}
}
else if(范围=='页面和所有子页面'){
var page=SitesApp.getPageByUrl(url);
var substands=page.getallsubstands();
对于(var j=0;j<0.length;j++){
var updates=getInfo_u(子体[j],更新,最后一次检查,何时);
}
}
否则{
var page=SitesApp.getPageByUrl(url);
var updates=getInfo(第页,更新,上次检查,时间);
}
如果(更新!=“”){
updates=updates.replace(//g,“”);
updates=updates.replace(//g,“”);
updates=updates.replace(//g,“”);
//删除重复项、删除已取消订阅的用户、删除虚假电子邮件地址
var mailing=scrubData_();
var subject=ss.getSheetByName('Dashboard').getRange('G5').getValue();
///////////////////////////////////////////////////////////////////////////////////
//如果更新的数量太重要,请将这些更新作为附件发送
///////////////////////////////////////////////////////////////////////////////////
如果(updates.length*2>19800){
var body=ss.getSheetByName('Dashboard').getRange('G7').getValue()+“
”;
正文+=“***您可以在附件中找到这些更新。***”;
正文+=“
”;
}
否则{
var body=ss.getSheetByName('Dashboard').getRange('G7').getValue()+“
”+更新;
正文+=“
”;
}
////////////////////
//批处理电子邮件
////////////////////
对于(变量j=0;j19800){
MailApp.sendmail('notify@google.com",主题,主体,{
密件抄送:密件抄送,
htmlBody:body,
附件:[Utilities.newBlob(更新,“text/html”,“更新”)]
});
}
否则{
MailApp.sendmail('notify@google.com",主题,主体,{
密件抄送:密件抄送,
htmlBody:body
});
}
}
var emails_sent=ss.getSheetByName('Dashboard').getRange('G17').getValue();
ss.getSheetByName('Dashboard').getRange('G17').setValue(发送的电子邮件+1);
}
setProperty(“上次检查”,当前时间);
}
函数getInfo(页面、更新、上次检查、时间){
var type=page.getPageType();
开关(类型.toString()){
“公告”一案:
var newsfeed=page.getAnnouncements();
对于(var j=0;j新日期(上次检查).getTime(){
更新+=“”+新闻源[j].getTitle()+“”;
更新+=“Blog”+page.getTitle()+”;
更新+=“预览”+新闻源[j].getTextContent().substr(0280)+“…”;
更新+=“链接
”;
}
}
打破
案例“FileCabinetPage”:
var attachments=page.getAttachments();
对于(var j=0;j新日期(上次检查).getTime(){
更新+=“”+附件[j].getTitle()+“”;
更新+=“类型附件”;
更新+=“说明”+附件[j].getDescription()+“”;
更新+=“Page”+Page.getTitle();+”;
更新+=“链接
”;
}
}
打破
案例“ListPage”:
var listItems=page.getListItems();
var listUpdated=false;
对于(var j=0;j新日期(上次检查).getTime(){