【问题标题】:Get emails from Google contacts using a range of sheets cell values使用一系列表格单元格值从 Google 联系人获取电子邮件
【发布时间】:2022-10-14 22:32:59
【问题描述】:

我正在尝试使用一系列单元格值从我的 Google 联系人列表中获取电子邮件。 我已经设法用一个值而不是一个范围/值列表来做到这一点。

在我的示例中,单元格 G2 包含名称 John Doe,我已设法从 G2 获取值,搜索我的联系人并返回相应的电子邮件。下一步是使用该返回值并将其写入同一张表中的另一个单元格,我也实现了这一点(将电子邮件地址写入 N2)。

我不知道如何对一系列单元格执行此操作,我尝试了许多不同的方法,但不断出错。

下面的代码仅适用于第一个单元格值,我尝试将范围更改为 (2, 7, 10, 1) 以获取前 10 个单元格值,看起来这部分工作正常,但我不是确定正确的方法是然后通过这个数组并获取电子邮件地址,最后运行一个循环将地址写入一系列单元格。

总而言之,我试图从 G2:G12 中获取一系列名称,将这些名称转换为电子邮件地址,并将结果写入 N2:N12。

下面的示例可以通过将代码复制到新的工作表文档中,将工作表命名为“Main”,向 G2 单元格添加名称并运行代码来复制。

function getEmail() {
  var ss = SpreadsheetApp.getActiveSpreadsheet()
  var sheet = ss.getSheetByName('Main');
  var EmailRange = sheet.getRange(2, 7, 1, 1)
  var EmailAddress = EmailRange.getValues()
  var contacts = ContactsApp.getContactsByName(EmailAddress);
  var email = contacts[0].getEmails()[0].getAddress();
    Logger.log(email);
  return email
  
  }


  
function writeEmailsToSheet() {
  var ss = SpreadsheetApp.getActiveSpreadsheet()
  var sheet = ss.getSheetByName('Main');
  var results = getEmail();
  var range = sheet.getRange(2, 14, 1, 1);
  range.setValue(results);
}

【问题讨论】:

  • 到目前为止,您尝试了什么,遇到了什么错误?只要有可能,您需要包含一个重现问题的最小示例。您还可以包括预期行为、实际行为以及它们之间的差异,这也会很有帮助。请访问How to Ask 获取有关如何编写问题的一些提示,以便社区能够以更好的方式帮助您。
  • 感谢 Lorena 的提醒,我添加了一些预期行为的摘要,最简单的示例是将代码复制到表格中并进行测试。我尝试了很多不同的东西,我不知道从哪里开始。我认为只希望解决问题比列出我的失败要好。

标签: google-chrome google-apps-script google-sheets


【解决方案1】:

为了给您一个想法,您可以尝试以下脚本:

更新

这是更新后的脚本,您可以使用continue 语句。如果条件发生,这将中断循环中的迭代,并将继续下一个。

function getEmail() {
  var ss = SpreadsheetApp.getActiveSpreadsheet()
  var sheet = ss.getSheetByName('Main');
  var emailRange = sheet.getRange("G2:G12")
  var emailAddress = emailRange.getValues();

  for (var i=0; i<emailAddress.length; i++){
    var contacts = ContactsApp.getContactsByName(emailAddress[i]);
    if (contacts != ""){
      var email = contacts[0].getEmails()[0].getAddress();
      sheet.getRange(i+2,14).setValue(email)
    }
    else{
      sheet.getRange(i+2,14).setValue("Not found") 
      continue
    }
  }
}

【讨论】:

  • 谢谢,这看起来效果很好。唯一的问题是一些值返回为未定义的并且打破了循环。我不确定他们为什么返回未定义,联系信息应该没问题,但这是我可以自己调查的问题。有没有办法跳过错误/未定义的值并进入下一个循环?也许使用 forEach() ?
  • @adam 尝试使用更新的脚本
猜你喜欢
  • 1970-01-01
  • 2017-10-19
  • 2021-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-12
相关资源
最近更新 更多