导入CSV错误异常:无法将','转换为char

时间:2019-12-20 23:10:26

标签: google-apps-script

我基于this one创建了一个脚本,该脚本从Gmail中获取了CSV附件,然后将其粘贴到Google表格中,当我尝试在新表格上再次使用该脚本时,出现了错误:

  

异常:无法将','转换为char。 (第22行,文件“代码”)

代码行:

  var csvData = Utilities.parseCsv(attachment.getDataAsString(), ',');

我觉得很奇怪,我在其他脚本中有完全相同的代码行,而且它们可以正常工作。我什至尝试从工作脚本中复制/粘贴代码行。

function importCSVFromGmail() {
  var threads = GmailApp.search("redacted");
  var message = threads[0].getMessages().pop();

  var attachment = message.getAttachments()[0];

  if (attachment != null) {
    var attachName = attachment.getName();

    // Is the attachment a CSV file
    if (attachName.substring(attachName.length-4) === ".csv") {
      var id = "redacted";
      var name = "Data Sheet";
      var sheet = SpreadsheetApp.openById(id);
      var tab = sheet.getSheetByName(name);
      

      // Clear the content of the sheet
      var csvData = Utilities.parseCsv(attachment.getDataAsString(), ",");
      tab.getRange(1, 1, csvData.length, csvData[0].length).setValues(csvData);
    }
  } 
}

任何帮助将不胜感激,我不知道为什么我只在新脚本中得到错误。

2 个答案:

答案 0 :(得分:1)

就像@TheMaster所建议的那样,您应该从此更改代码行

var csvData = Utilities.parseCsv(attachment.getDataAsString(), ",");

对此

var csvData = Utilities.parseCsv(attachment.getDataAsString());

您还可以了解有关.parseCsv()函数here的更多信息。

答案 1 :(得分:0)

我认为删除参数不是最佳解决方案。

这是Google的定义: parseCsv(csv,定界符)

这是我的解决方案:

var csvData = Utilities.parseCsv(attachment.getDataAsString(), ','.charCodeAt(0));

注意:删除示例中的参数可能没有区别,因为','是此函数中的默认分隔符。在这种情况下,您可能需要另一个分隔符,例如';'