从gmail导入zipdata(CSV)到Google Spreadseet

时间:2019-03-20 10:50:21

标签: csv google-apps-script google-sheets

我正在尝试构建一个Google电子表格,该电子表格会自动从我的gmail收件箱(标记为测试)中导入附件.zip的内容。我绝对不是编码人员,但我尝试复制粘贴Google脚本的一些有效位。我在第26行收到“无效参数”错误(提取的变量= 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);


}}}

1 个答案:

答案 0 :(得分:0)

从错误消息中,我认为附件文件的blob可能使用application/x-zip的mimeType错误(它是Utilities.unzip()还是其他?)。那修改呢?

修改后的脚本:

请进行如下修改。

从:
var csv =  attachments[0];
至:
var csv =  attachments[0].setContentTypeFromExtension();

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

注意:

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

参考文献:

如果我误解了您的问题,而这不是您想要的结果,我深表歉意。