将gmail中的zip数据(CSV)导入google电子表格

问题描述 投票:0回答:1

我正在尝试构建一个谷歌电子表格,它自动从我的Gmail收件箱中导入附加的.zip的内容(标记为test)。我绝对没有编码器,但我试图复制粘贴谷歌脚本的一些工作位。我在第26行遇到“无效参数”错误(var extracted = Utilities.unzip(csv);)

提前致谢!

function getCSV() {


var query = "label:test";

var threads = GmailApp.search(query);
Logger.log('threads len ' + threads.length);

Logger.log(query);

for (var i = 0; i < threads.length; i++) {
var messages = threads[i].getMessages();
Logger.log(messages);    
for (var m = 0; m < messages.length; m++) {
   var supportStats = [];


var msgs = GmailApp.getMessagesForThreads(threads);
   Logger.log(msgs);
var attachments = msgs[0][0].getAttachments();
   Logger.log(attachments);



var csv =  attachments[0];
var extracted = Utilities.unzip(csv);
var string = extracted[0].getDataAsString(); //INVALID ARGUMENT ERROR
var data = Utilities.parseCsv(string);


var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("import");
sheet.clearContents();
var range = sheet.getRange(1,1, data.length,data[0].length);
range.setValues(data);


}}}
csv google-apps-script google-sheets
1个回答
0
投票

从错误消息,我认为附件文件的blob可能有错误的mimeType(它的application/x-zip或其他?)使用Utilities.unzip()。那么这个修改怎么样?

Modified script:

请修改如下。

From:
var csv =  attachments[0];
To:
var csv =  attachments[0].setContentTypeFromExtension();

要么

var csv =  attachments[0].setContentType("application/zip");

Note:

  • 从您的脚本和问题,这个修改假设从attachments[0]检索的msgs[0][0].getAttachments()是zip文件的blob。如果这不是zip文件,请修改脚本。

References:

如果我误解了你的问题并且这不是你想要的结果,我道歉。

© www.soinside.com 2019 - 2024. All rights reserved.