Google Apps Script读取CSV导入联系人执行失败问题咨询
你不需要专门去除csvData中的"[]"符号,报错全部由参数传递错误、变量拼写错误、语法错误导致。
ContactsApp.createContact的官方调用规则为:必须传入三个独立的字符串参数,顺序为「名、姓、电子邮箱地址」,不接受直接传入数组、数组拼接的整段字符串。
各版本代码错误说明
第一版
- 未提前声明
group变量就直接调用,触发ReferenceError: group is not defined报错 - 直接将
parseCsv返回的数组csvData[1]传入方法,不符合参数要求,即使修复group定义也会报错
第二版
- 变量拼写错误:定义的变量名为
contdata,调用时写为condata,触发变量未定义报错 - 逻辑错误:即使拼写正确,将数组转成整段逗号分隔的字符串传入方法,依然不符合参数格式要求
第三版
- 语法错误:
csvData[1].toString后漏写括号(),等于传入的是toString方法本身而非执行后的返回值 - 逻辑错误:即使补全括号,传入的整段字符串依然不符合方法的参数签名要求,触发参数不匹配报错
修复后可用代码
假设你的csv文件第一行为表头,从第二行开始每列顺序为「名、姓、电子邮箱」,参考代码如下:
function importCSVFromGoogleDrive() { // 读取csv文件 var file = DriveApp.getFilesByName('file2.csv').next(); var csvData = Utilities.parseCsv(file.getBlob().getDataAsString()); // 获取联系人分组 var group = ContactsApp.getContactGroup("System Group: My Contacts"); // 遍历csv行,跳过表头 for (let i = 1; i < csvData.length; i++) { let row = csvData[i]; // 按列顺序取出三个参数传入创建联系人方法 let newContact = ContactsApp.createContact(row[0], row[1], row[2]); // 将联系人加入分组 group.addContact(newContact); // 若需要补充手机号等其他信息,可追加对应方法,示例: // newContact.addPhone(ContactsApp.Field.MOBILE_PHONE, row[3]) } }
补充说明
日志中打印数组时显示的[]只是数组的默认展示格式,Utilities.parseCsv返回的本身就是标准二维数组,你只需按索引提取对应列的内容传入方法即可,不需要额外做去除[]的操作。
内容的提问来源于stack exchange,提问作者Thomas Kast
相关产品推荐
相关产品推荐

