Chrome 使用工作表单元格值范围获取Google联系人的电子邮件

js4nwp54  于 2022-12-06  发布在  Go
关注(0)|答案(1)|浏览(173)

我尝试使用单元格值的范围从我的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);
}
sdnqo3pr

sdnqo3pr1#

您可以尝试以下脚本来了解一下:

更新

这是更新后的脚本,你可以使用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
    }
  }
}

相关问题