getContactsByCustomField中的参数无效

时间:2015-12-14 13:08:36

标签: google-apps-script google-sheets

我正在撰写Google应用程序脚本,以使我的联系人与联系人电子表格保持同步。我们有很多没有电子邮件的联系人,所以我需要创建一个自定义唯一ID。由于这些联系人是通过Google表单(仅由一名工作人员)添加的,因此(仅限我)使用时间戳作为唯一ID是有意义的。

因此,在我的脚本中,我使用此自定义字段检查匹配的联系人,如下所示:

//get the time stamp from the spreadsheet
var timeStamp = sheet.getRange(i+2, 1, 1, 1).getValue();
//find contacts with that timestamp in their Time Stamp field
var contacts = ContactsApp.getContactsByCustomField(timeStamp, 'Time Stamp');

第二行(我函数中的第20行)抛出此错误:

Invalid argument (line 20, file "Code")

我注意到在谷歌API参考中,getContactsbyCustomField的第二个参数需要是一个扩展字段',但提供的示例表明我可以将其命名为我想要的。

我对如何解决这个问题有点失落。自从我上次做任何体面的编码以来已经10年了,这主要是PHP / MySQL的东西,所以感觉就像我现在回到学前编码一样!

1 个答案:

答案 0 :(得分:0)

这种情况正在发生,因为当您使用以下代码行获取时间戳时,它会将其转换为Date对象;

var timeStamp = sheet.getRange(i+2, 1, 1, 1).getValue();

你会期望像12/14/2015 9:50:03这样的值,但你真的得到像Mon Dec 14 2015 09:50:03 GMT-0500 (EST)

这样的值

我不确定这是否按预期运行或是否需要提出问题。

我可以通过转换将其添加为自定义字段的日期来解决此问题。

var c = ContactsApp.createContact(e.namedValues["First Name"],e.namedValues["Last Name"] , e.namedValues["Email"]);
    c.addCustomField("Time Stamp", new Date(e.namedValues["Timestamp"]).toString());  

您还需要将读入值转换为字符串。

//get the time stamp from the spreadsheet
var timeStamp = sheet.getRange(i+2, 1, 1, 1).getValue();
//find contacts with that timestamp in their Time Stamp field
var contacts = ContactsApp.getContactsByCustomField(timeStamp.toString(), 'Time Stamp');