簡體   English   中英

通過名稱將CSV導入Google表格

[英]Import CSV by name 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);
}
}

該功能當前會收到該電子郵件發送的任何附件。 我想更改功能,使其僅選擇名為“ data.CSV”的附件,並忽略所有其他附件。 有沒有辦法做到這一點?

先感謝您!

所以我將其修改為:

function Exact_CSV_Import() {
    var threads = GmailApp.search("from:cbuffone123@gmail.com");
    var message = threads[0].getMessages()[0];
    var attachment = message.getAttachments()[0];  
    for (var n = 0; n < attachment.length; n++) {
var attachmentName = attachments[n].getName();
if (attachmentName = "data1.csv")  
{
    // do stuff with "data1.csv"        
     attachment.setContentTypeFromExtension();  
  if (attachment.getContentType() === "text/csv") {
    var sheet = SpreadsheetApp.getActiveSheet();
    var csvData = Utilities.parseCsv(attachment.getDataAsString(), ",");
    sheet.clearContents().clearFormats();
    sheet.getRange(1, 1, csvData.length, csvData[0].length).setValues(csvData);
}
}

}
}

似乎什么也沒發生。 我沒有收到任何錯誤,但似乎沒有做任何事情?

這個說法:

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

只查看.getAttachments()返回的附件數組中的第一個附件

而是使用var attachments = message.getAttachments();

然后,您可以遍歷附件並選擇所需的附件。

該循環將打印出附件的名稱及其大小。

for (var n = 0; n < attachments.length; n++) {
  Logger.log( attachments[n].getName(), attachments[n].getSize());
}

您應該可以從那里開始...

編輯:更多澄清以根據請求選擇性地處理不同的CSV文件。

我很確定attachments不是關聯數組,因此您不能做附件[“ csv”]之類的事情。 但是您可以遍歷附件列表,並選擇具有所需名稱的附件,而忽略其余的附件。 參見下面的一些代碼...

for (var n = 0; n < attachments.length; n++) {

    var attachmentName = attachments[n].getName();

    if (attachmentName = "data1.csv")  
    {
        // do stuff with "data1.csv"
    }
    else
    if ((attachmentName = "data2.csv")
    { 
        // do stuff with "data1.csv"
    }
    else 
    {   
        // do nothing - just skip it
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM