繁体   English   中英

从Gmail线程的ZIP文件中提取CSV并将数据写入Google表格

[英]Extract CSV from ZIP file in gmail thread and write data to a google sheets

我正在执行以下操作的脚本。 在gmail中查找“ test”中的特定标签。 查找第一条消息并获取附件(这是一个ZIP,包含一个CSV)。提取CSV并将其写入Google电子表格。

我设法通过CSV附件实现了此操作,但是没有使用CSV附件的zip格式。

这是我到目前为止的位置。 我确定这是我想念的简单东西,但它似乎是从ZIP读取并写入奇怪的字符,而不是从内部的CSV读取。

    function getCSV() {
 var myLabel = GmailApp.getUserLabelByName("test");
 var threads = myLabel.getThreads(0,1);
 var msgs = GmailApp.getMessagesForThreads(threads);
 var attachments = msgs[0][0].getAttachments();

 Logger.log(attachments);

var csv =  attachments[0];

Logger.log(csv);

 var extracted = Utilities.unzip(csv);

 Logger.log("unzipped data "+ extracted);
 var toString = extracted.getBlob.getDataAsString();

 Logger.log(toString);

 var data = Utilities.parseCsv(toString);
 Logger.log(data);


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

}

以防万一我遇到了问题,这是我制作的将CSV附件导入到Google表格中的脚本,可以正常工作。

function getCSV() {



 var myLabel = GmailApp.getUserLabelByName("test");
 var threads = myLabel.getThreads(0,1);
 var msgs = GmailApp.getMessagesForThreads(threads);
 var attachments = msgs[0][0].getAttachments();

 var csv =  attachments[0].getDataAsString();
 var data = Utilities.parseCsv(csv);



var a = data.length ;
var b = data[0].length; 


var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("TicketDump");
var super = sheet.getRange("E1").getFormula();
var ticketLink = sheet.getRange("F2:F").getFormulas();
sheet.clearContents();
var range = sheet.getRange(sheet.getLastRow()+1,5, a, b);
var range = sheet.getRange(1,1, a, b);
range.setValues(data);
sheet.getRange("E1").setFormula(super);
sheet.getRange("F1").setValue("Header name");
sheet.getRange("F2:F").setFormulas(ticketLink);


}

找到我们出了问题的地方。

这是代码的toString部分。 我没有告诉它哪个条目

这部分;

var toString = extracted.getBlob.getDataAsString();

应该是这样的

var toString = extracted[0].getDataAsString();

最终代码如下所示

    function getCSV() {
 var myLabel = GmailApp.getUserLabelByName("test");
 var threads = myLabel.getThreads(0,1);
 var msgs = GmailApp.getMessagesForThreads(threads);
 var attachments = msgs[0][0].getAttachments();



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




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


}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM