【问题标题】:how to remove contact info from Google contact when email removed from google sheet using apps script使用应用程序脚本从谷歌表格中删除电子邮件时如何从谷歌联系人中删除联系信息
【发布时间】:2021-04-15 18:08:14
【问题描述】:

我正在编写一个应用程序脚本,该脚本将联系信息(姓名和电子邮件)从谷歌表写入谷歌联系人。

google sheet 有 3 列,第一列是时间戳,第二列是电子邮件,第三列是名称。

Apps 脚本工作,将联系人添加到谷歌联系人,但是,当从谷歌表中删除任何电子邮件时,我希望在谷歌表更新/编辑时,该联系人信息也会从谷歌联系人中删除。我尝试了一些,但卡住了,无法成功。我是 Apps 脚本的新手。

如果能帮助我编写脚本,我将不胜感激。

这是我得到的:

function AddToGoogleContacts() {

var sheet = SpreadsheetApp.getActive().getSheetByName("sheet1");  
for (var i = 0; i < sheet.getLastRow()-1; i++) { 

var contactEmail = sheet.getRange(i+2,2,1,2).getValue(); 
var myContact = ContactsApp.getContact(contactEmail); 

 if (myContact === null){  ContactsApp.createContact(sheet.getRange(i+2,3,1,2).getValue(),"",sheet.getRange(i+2,2,1,2).getValue());  

 }
 }
 } 

【问题讨论】:

  • 您现在所拥有的只是创建联系人。您要删除哪个联系人?
  • 感谢您的回复;当从谷歌表中删除任何电子邮件或数据行时,我希望删除的数据也从谷歌联系人中删除,该表由谷歌表单(取消订阅表单)更新,因此订阅列表的任何人都可以取消订阅,所以在任何时候我想在我的谷歌联系人中有一个干净的电子邮件列表。
  • 如何从数据表中删除联系人?
  • 请描述退订表单的事件对象'values'数组
  • 您好,我只是想确认一下,当您在工作表中添加联系信息时,如何触发您的 AddToGoogleContacts()?你用按钮吗?自定义菜单?或 onEdit 触发器?此外,根据我的理解,如果您的工作表中的联系信息已被删除,您也希望将其删除谷歌联系人。同样,您计划/想要如何触发该过程?当您删除工作表中的信息时,您会单击一个按钮吗?自定义菜单?类似的东西?

标签: google-apps-script google-sheets google-contacts-api


【解决方案1】:
function delGoogleContact(email) {
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getSheetByName("sheet1");
  const vs = sh.getRange(2,1,sh.getLastRow()-1,3).getValues();
  vs.forEach((r,i)=>{
    if(r[1]==email){
      ContactsApp.deleteContact(ContactsApp.getContact(email));
    } 
  });
} 

【讨论】:

  • 感谢代码,我试过了,我从工作表中删除了一行,然后运行代码,它没有从谷歌联系人中删除联系人,我也没有收到错误。
  • 代码设置为删除您在参数中提供的电子邮件的联系人
  • 我如何知道如何删除不再存在的联系人?
  • 您要删除列表中不再存在的所有联系人吗?
  • 我不知道你的联系人,但我的联系人往往有很多电子邮件,因此仅根据电子邮件删除它们可能不是一个好主意
猜你喜欢
  • 2017-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多