【发布时间】:2019-07-26 13:47:52
【问题描述】:
我正在尝试从 CSV 报告中获取数据,该报告位于共享电子邮件的特定文件夹中,并将 Google 表格中特定标签中的旧数据替换为新数据。
我已经尝试了不同的解决方案,但似乎没有一个能将我带到我想要的地方。下面的代码是我生成的最干净的代码,但由于某种原因,它什么也没做。
我遵循的步骤:
- 打开文件夹所在的邮箱(是共享邮箱,在Gmail中管理)
- 搜索所在文件夹(label:rpt-its-all-data)
- 记录最后收到的电子邮件
- 打开电子邮件/附件
- 获取数据
- 按 ID 打开 Google 表格
- 用当前日期更新选项卡 INFO 中单元格 B1 中的日期(我什至没有尝试对这个进行排序)
- 打开选项卡 ALLDATA
- 在选项卡 ALLDATA 中粘贴值
这是一份谷歌表格查看格式:https://docs.google.com/spreadsheets/d/1GyGxSwUtITeje0-Qx63rB8xChMSbLvn1FDCOKOJITio/edit?usp=sharing
我已经尝试过这段代码:
function importCSVFromGmail() {
var threads = GmailApp.search("id:AH1rexR2yzlanbk9GyP52tyVKSnXcMDz_miTs1-lLXtJwJB56l2r label:rpt-its-all-data");
var message = threads[0].getMessages()[0];
var attachment = message.getAttachments()[0];
// Is the attachment a CSV file
if (attachment.getContentType() === "text/csv") {
var id = "1F_Z_00-ThdTRzlZ3nYd_pieJHkUjgye3pI_KJfydoP4";
var name = "ALLDATA";
var sheet = SpreadsheetApp.openById(id);
var tab = sheet.getSheetByName(name);
// Clear the content of the sheet
tab.clearContents().clearFormats();
tab.getRange(1, 1, csvData.length, csvData[0].length).setValues(csvData);
var csvData = tab.Utilities.parseCsv(attachment.getDataAsString(), ",");
}
}
使用上面的代码,我没有得到任何结果。我不确定为什么会这样。
我认为查询中的邮件 ID 不能正确调用该电子邮件,但我找不到任何其他方法。
【问题讨论】:
-
您的变量
csvData似乎有问题。应该在您设置代码值的那一行的上方。
标签: csv google-apps-script google-sheets gmail