我正在撰写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的东西,所以感觉就像我现在回到学前编码一样!
答案 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');