簡體   English   中英

使用Google Script通過Google工作表中的Excel工作表導入數據

[英]Import data through Excel sheet in Google sheet with Google Script

我正在嘗試從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);

  }

}

如果要使用if (attachment.getContentType() === "text/csv") {} ,則需要設置text/csv的mimeType。 另外,如果attachment可能具有各種mimeType,那么該修改如何?

模式1:

如果附件文件的文件名包括擴展名,該修改如何? 我認為這是更適合您情況的方法,因為電子郵件的附件文件通常具有文件名和擴展名。

var attachment = message.getAttachments()[0];
attachment.setContentTypeFromExtension(); // Added
  • 此修改的重點是,文件的文件名必須具有擴展名。 如果文件沒有擴展名,則mimeType變為null。

模式2:

如果附件文件的文件名不包含擴展名,那么此修改如何?

var attachment = message.getAttachments()[0];
attachment.setContentType("text/csv"); // Added
  • 此修改的重點是強制修改文件的mimeType。

注意:

  • 在以上修改中,我介紹了用於更改mimeType的方法。 我不確定您的文件名和詳細情況。 因此,請使用上述方法根據您的情況修改腳本。 如果您有任何疑問,請隨時告訴我。

參考文獻:

如果這不是您想要的結果,我深表歉意。

暫無
暫無

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

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