Google Apps 脚本:将所有 Google 联系人导出为 CSV

Posted

技术标签:

【中文标题】Google Apps 脚本:将所有 Google 联系人导出为 CSV【英文标题】:Google Apps Script: Export all Google contacts as CSV 【发布时间】:2017-09-08 15:59:34 【问题描述】:

我刚刚开始学习 Google Apps 脚本来解决一项实际任务。我想编写一个脚本,定期将我 Google 帐户中的所有联系人导出到 CSV 文件中,并将其发送到预定义的电子邮件地址。如果我的联系人列表中会发生数据丢失,这应该是一种自动版本备份。

实际上,我想做的是在我的脚本中使用 Google 联系人的 Web 界面(更多 > 导出)中可用的本机导出功能。我浏览了 Google API,但在 Google API 中找不到满足我需要的服务或对象。有可能吗?

【问题讨论】:

在我看来,您需要的一切都是正确的here 我认为您必须自己制作 csv 列表并将其保存在文件中。但我猜这是相当简单的事情。 您可能可以在旧版本的 Gmail 联系人中获得所需的内容。单击更多,您将看到导出。我想这是link。 @Cooper,你明白我的意思吗?我需要通过 GAS 脚本以编程方式执行此操作。 我不认为我做到了,但我现在做到了 【参考方案1】:

这是我汇总的一些内容,旨在将您联系人中的一些基本字段转换为可能是 csv 输出的内容。您可能想要添加更多字段,并可能使用不同的分隔符。

function getAllContacts() 
  var contactsA=ContactsApp.getContacts();
  var s='';
  var br='<br />';//line delimiter change to linefeed when not using html dialog
  var dlm=' ~~~ ';//field delimiter
  for(var i=0;i<contactsA.length;i++)
  

    s+=Utilities.formatString('<br />\'%s\',\'%s\',\'%s\',\'%s\',\'%s\'%s',
    (typeof(contactsA[i].getFullName())!='undefined')?contactsA[i].getFullName():'',
    (typeof(contactsA[i].getAddresses().map(function (v,i,A)  return A[i].getAddress();))!='undefined')?contactsA[i].getAddresses().map(function (v,i,A)  return A[i].getAddress();).join(dlm):'',
    (typeof(contactsA[i].getEmails().map(function(v,i,A) return A[i].getAddress();))!='undefined')?contactsA[i].getEmails().map(function(cV,i,A) return A[i].getAddress();).join(dlm):'',
    (typeof(contactsA[i].getPhones().map(function(v,i,A)return A[i].getPhoneNumber();))!='undefined')?contactsA[i].getPhones().map(function(v,i,A)return A[i].getPhoneNumber();).join(dlm):'',
    (typeof(contactsA[i].getCompanies().map(function(v,i,A)return A[i].getCompanyName();))!='undefined')?contactsA[i].getCompanies().map(function(v,i,A)return A[i].getCompanyName();).join(dlm):'',br);
  
  var ui=HtmlService.createHtmlOutput(s).setWidth(800)  ;
  SpreadsheetApp.getUi().showModelessDialog(ui, 'Contacts')

【讨论】:

我的要求应该更清楚。我需要一个 CSV 文件,其中包含有关我的联系人的所有数据,以便稍后将其导入我的 Google 帐户,以在数据丢失的情况下恢复我的所有联系人。实际上,我想做的是使用 Google 联系人的 Web 界面中可用的本机导出功能(更多 > 导出)。我现在将这个要求添加到问题中。 @TecMan 您的要求可能在格式上略有不同,但这是您开发自己的实现的良好开端。您可以考虑输出到 Google 表格而不是通过电子邮件发送 CSV。 如果遇到困难,请尝试更新您的问题。 似乎是什么问题?你有什么错误吗? 你是对的,但我不知道为什么。我会努力解决这个问题 实际上,我可以在某些电子表格中运行它,但不能在其他电子表格中运行。它没有运行的地方是我手动输入范围的地方。

以上是关于Google Apps 脚本:将所有 Google 联系人导出为 CSV的主要内容,如果未能解决你的问题,请参考以下文章

使用 Google Apps 脚本将文件上传到我的 google 驱动器(在 GOOGLE 中没有表格)

如何将 Google Apps 脚本的范围缩小到特定文件

用于复制整个 Google Drive 文件结构的 Google Apps 脚本;如何避免超时?

使用 Google Apps 脚本自动将标签移动/应用到 Gmail

将工作表复制到另一个电子表格[Google Apps脚本]

Google Apps脚本未遍历所有文件