【问题标题】:Collate and perform calculations on daily CSV reports in gmail在 gmail 中对每日 CSV 报告进行整理和计算
【发布时间】:2015-11-28 16:46:55
【问题描述】:
【问题讨论】:
标签:
python
google-app-engine
csv
google-api
google-api-python-client
【解决方案1】:
好吧,这比我想象的要简单得多
var targetFile = "1**************vr4PchIo1wcpTEQU"; // Output file
var targetSheet = "booking_weekly"; // output sheet
function Main() {
/Different reports and client abbreviations
reportname = '_booking_weekly'
clientnames = ['OO','TP','TG',]
for(var i = 0;i <clientnames.length;i++){
clientname = clientnames[i]
/Set the search string up
searchstring = 'subject:' + clientname + reportname
var searchedThreads = GmailApp.search( searchstring)[0];
var id = searchedThreads.getId();
var attachtextLength = GmailApp.getMessageById(id).getAttachments()[0].getDataAsString().length;
if (attachtextLength <= 2000){
var attachtext = GmailApp.getMessageById(id).getAttachments()[0].getDataAsString();
UpdateSheet(attachtext,clientname,reportname);
}
}
}
function UpdateSheet(dataString,client,report) {
//ommited CSVTo Array function as it is in the Tutorials
var dataArray = CSVToArray(dataString);
var myFile = SpreadsheetApp.openById(targetFile);
var mySheet = myFile.getSheetByName(targetSheet);
var lastRowValue = mySheet.getLastRow();
for (var i = 0; i < dataArray.length; i++) {
mySheet.getRange(i+lastRowValue+1, 3, 1, dataArray[i].length).setValues(new Array(dataArray[i]));
//Pass client name to sheet
mySheet.getRange(i+lastRowValue+1, 1, 1, 1).setValue([client]);
//Passs reportname to sheet
mySheet.getRange(i+lastRowValue+1, 2, 1, 1).setValue([report]);
}
mySheet.deleteRows(lastRowValue+1)
}