繁体   English   中英

将CSV附件导入Google工作表

[英]Import CSV attachment into google sheets

我想要做的是获取CSV附件的内容以输出到Google表格。 我不知道我是否正确地做了这个,但我在网上找到了它,运行它,然后没有任何反应。

function importCSVFromGmail() {
    var threads = GmailApp.search("from:cbuffone123@gmail.com");
    var message = threads[0].getMessages()[0];
    var attachment = message.getAttachments()[0];

    // 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文件时,mimeType将作为application/vnd.ms-excel检索。 我认为“没有发生”的原因就是这个。 那么这些修改怎么样? 我认为您的情况有几种解决方法。 所以请将这些修改视为其中的3个。

修改要点:

  • 模式1:从文件名设置mimeType。
  • 模式2:使用mimeType作为application/vnd.ms-excel
  • 模式3:使用扩展名。

模式1:

请在if (attachment.getContentType() === "text/csv") {之前添加以下脚本if (attachment.getContentType() === "text/csv") {

attachment.setContentTypeFromExtension();

模式2:

请修改如下。

从:
 if (attachment.getContentType() === "text/csv") { 
至:
var fileName = attachment.getName().toUpperCase().split(".");
if (fileName.length > 1 && fileName[1] == "CSV") {

模式3:

请修改如下。

从:
 if (attachment.getContentType() === "text/csv") { 
至:
 var fileName = attachment.getName().toUpperCase().split("."); if (fileName.length > 1 && fileName[1] == "CSV") { 

注意:

  • 关于模式1,使用setContentTypeFromExtension()从文件名的扩展名设置mimeType。
  • 关于模式2,如果在您的环境中,CSV文件被检索为其他mimeType,请修改application/vnd.ms-excel
  • 关于模式1和3,如果CSV文件的文件名没有扩展名或其他扩展名,则在该情况下不能使用。

参考:

如果这些不是你想要的,我很抱歉。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM