Google Apps脚本:将所有Google通讯录导出为CSV格式

时间:2017-09-08 15:59:34

标签: google-apps-script google-api

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

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

1 个答案:

答案 0 :(得分:2)

这里有一些东西,我把你的联系人中的一些基本字段放在一起,可能是一个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')
}