簡體   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