我正在尝试构建一个谷歌电子表格,它自动从我的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);
}}}
从错误消息,我认为附件文件的blob可能有错误的mimeType(它的application/x-zip
或其他?)使用Utilities.unzip()
。那么这个修改怎么样?
请修改如下。
From:var csv = attachments[0];
To:
var csv = attachments[0].setContentTypeFromExtension();
要么
var csv = attachments[0].setContentType("application/zip");
attachments[0]
检索的msgs[0][0].getAttachments()
是zip文件的blob。如果这不是zip文件,请修改脚本。如果我误解了你的问题并且这不是你想要的结果,我道歉。