google-apps-script - 使用应用脚本轮询 Google 通讯录更改
问题描述
我需要检测我的通讯录中的变化,不幸的是 People API 没有提供这样的功能。我在一些博客中读过需要投票。我没有找到任何 API 来投票https://developers.google.com/contacts/v3/reference谁能建议我如何实现此功能?
解决方案
如果您的联系人数量或您的联系人电子邮件数量发生变化,您可以使用此类功能接收和发送电子邮件。
function sendEmailIfContactChange() {
const gObj = PropertiesService.getScriptProperties().getProperties();
const contacts=ContactsApp.getContacts();
var n=0;
contacts.forEach((c)=>{c.getEmails().forEach((e)=>{n++;});});
if(!gObj.hasOwnProperty('contacts')) {
gObj.contacts=contacts.length;
gObj.emails=n;
PropertiesService.getScriptProperties().setProperties(gObj);
return;
} else {
let pc = gObj.contacts;
let pe = gObj.emails;
gObj.contacts = contacts.length;
gObj.emails = n;
PropertiesService.getScriptProperties().setProperties(gObj);
if(pc != contacts.length || pe != n) {
GmailApp.sendEmail(gobj.globals.privateemail,'Contacts Have Change',`Old Contact: ${pc} New Contacts: ${contacts.length} \nOld Emails: ${pe} New Emails: ${n}`);
}
}
}
您可以像这样创建轮询触发器:
function createPollingTrigger() {
const ts = ScriptApp.getProjectTriggers().map(t=>t.getHandlerFunction());
if(!~ts.indexOf('sendEmaiIfContactChange')) {
ScriptApp.newTrigger('sendEmailIfContactChange').timeBased().everyHours(2).create();
}
}
推荐阅读
- arrays - perl 根据值创建多个数组并循环遍历它们
- android - 如何在不推荐使用 onActivityResult 的情况下使用 Facebook 登录 CallbackManager?
- c++ - 将不同对象的引用传递到一个类中,构造函数中有一个对象
- javascript - JavaScript中VSCode自动完成的变量名问题
- flutter - 如何在颤动中使用 SVG 制作单选按钮类?
- java - LDAPException(resultCode=84 (解码错误)
- javascript - 在 vue.config.js 如何将 chunk-common.css 拆分为 mo、pc
- arrays - 指向数组的指针,在循环时每隔一次跳转一次索引
- python - 从保存的自动编码器中提取编码器和解码器
- node.js - 电子中的并发http请求(并发)?