【发布时间】:2018-04-29 01:12:14
【问题描述】:
尝试创建一个 Google Apps 脚本来读取来自特定电子邮件地址的电子邮件并将 CSV 文件的内容复制到 Google 工作表中。
问题是有时文件以 zip 附件的形式出现。我正在尝试在脚本中加入逻辑以解压缩 zip(如果它是 zip 附件),然后将数据发布到 Google 工作表。
当前收到以下错误消息:Cannot find function getDataAsString in object Blob。
任何关于让它与潜在的 zip 文件一起工作的想法/建议都会很棒。
你可以在下面找到我的完整代码:
function myFunction() {
var threads = GmailApp.search("from:testemail@example.com");
var message = threads[0].getMessages()[0];
var attachment = message.getAttachments()[0];
Logger.log(attachment.getContentType());
// Is the attachment a CSV file
if (attachment.getContentType() === "text/csv") {
var sheet = SpreadsheetApp.getActiveSheet();
var csvData = Utilities.parseCsv(attachment.getDataAsString(), ",");
Logger.log("Found a CSV file");
// Remember to clear the content of the sheet before importing new data
sheet.clearContents().clearFormats();
sheet.getRange(1, 1, csvData.length, csvData[0].length).setValues(csvData);
}
if (attachment.getContentType() === "application/zip") {
var sheet = SpreadsheetApp.getActiveSheet();
var files = Utilities.unzip(attachment);
Logger.log(files);
var newDriveFile = DriveApp.createFile(files[0]);
var csvData = Utilities.parseCsv(files.getDataAsString(), ",");
Logger.log("Found a ZIP file");
// Remember to clear the content of the sheet before importing new data
sheet.clearContents().clearFormats();
sheet.getRange(1, 1, csvData.length, csvData[0].length).setValues(csvData);
}
}
【问题讨论】: