【问题标题】:Import data through Excel sheet in Google sheet with Google Script使用 Google Script 通过 Google 表格中的 Excel 表格导入数据
【发布时间】:2019-03-01 10:37:30
【问题描述】:

我正在尝试从我的 Gmail 附件中的 csv 文件中获取数据,对其进行解析并在 Google 表格中使用 Google 脚本将其导入。

问题是当我获得附件的内容类型时,我收到了这条消息“application/octet-stream”而不是 CSV,所以我认为算法不会在 if 条件下继续运行。

你有什么建议为什么我没有得到正确的文件类型?

非常感谢!

代码如下:

function importCSVFromGmail() {

  var threads = GmailApp.search("Money Transfer Tracking - Tickets");
  var message = threads[0].getMessages()[0];
  var attachment = message.getAttachments()[0];

  console.log(attachment.getContentType())

  // Is the attachment a CSV file
  if (attachment.getContentType() === "text/csv") {

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

    // Remember to clear the content of the sheet before importing new data
    sheet.clearContents().clearFormats();
    sheet.getRange(1, 1, csvData.length, csvData[0].length).setValues(csvData);

  }

}

【问题讨论】:

    标签: csv google-apps-script import gmail spreadsheet


    【解决方案1】:

    如果要使用if (attachment.getContentType() === "text/csv") {},需要设置text/csv的mimeType。另外如果attachment有各种mimeType的可能性,这个修改怎么样?

    模式一:

    如果附件文件的文件名包含扩展名,那么这个修改怎么样?我认为这更适合您的情况,因为电子邮件的附件通常带有文件名和扩展名。

    var attachment = message.getAttachments()[0];
    attachment.setContentTypeFromExtension(); // Added
    
    • 此修改的重点是文件的文件名必须具有扩展名。如果文件没有扩展名,则 mimeType 变为 null。

    模式2:

    如果附件文件有文件名,不包括扩展名,那么这个修改怎么样?

    var attachment = message.getAttachments()[0];
    attachment.setContentType("text/csv"); // Added
    
    • 这个修改的重点是强制修改file的mimeType。

    注意:

    • 在上面的修改中,我介绍了改变mimeType的方法。我不确定您的文件名和详细情况。因此,请使用上述方法根据您的情况修改您的脚本。如果您有任何问题,请随时告诉我。

    参考资料:

    如果这不是您想要的结果,我深表歉意。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-10
      • 2011-02-09
      • 2020-02-23
      • 1970-01-01
      • 1970-01-01
      • 2017-05-17
      相关资源
      最近更新 更多