我是Google Scripts的新手,所以我已经在这个问题上挣扎了几天了。通过多个来源,没有一个有和我一样的问题。
我为我的脚本设置了一个基于时间的触发器,将CSV从我的Gmail导入到工作表中。发送的电子邮件是每天从DV360提取的报告,然后用于填充Data Studio Dashboard。
我的第一个问题是,要么是触发器没有正常工作(这可能是不太可能的),要么是我的代码有问题。我注意到的一件奇怪的事情是,触发器对其中一个报告有效,但对其余6个报告无效。
我在这个项目中有多个脚本,所有这些都从不同的电子邮件导入不同的CSV附件,每个都在谷歌工作表文件中填充自己的选项卡。
一旦我运行了一次脚本,并且它填充了相应的工作表,即使我的收件箱中有一封带有较新附件的电子邮件,它也不会再次运行(例如,如果我第二天运行脚本,它不会使用特定日期的报告填充工作表)。
下面是我使用的代码。
function importCSVFromGmail() {
var threads = GmailApp.search("Label:Audience_List");
var message = threads[0].getMessages().pop();
var attachment = message.getAttachments()[0];
if (attachment != null) {
var attachName = attachment.getName();
// Is the attachment a CSV file
if (attachName.substring(attachName.length-4) === ".csv") {
var id = "1cl5nZiJ2Jh__pMig-BoGTKpE9kM8-5nYe178WdI6ChI";
var name = "Audience_List_Backend";
var sheet = SpreadsheetApp.openById(id);
var tab = sheet.getSheetByName(name);
var tabInfo = sheet.getSheetByName("Audience_List_Backend");
tabInfo.getRange("A1").setValue(new Date());
// Clear the content of the sheet
tab.clearContents().clearFormats();
var csvData = Utilities.parseCsv(attachment.getDataAsString(), ",");
tab.getRange(1, 1, csvData.length, csvData[0].length).setValues(csvData);
}
}
}提前感谢您的帮助!
发布于 2020-03-31 15:56:04
解决方案很简单。
将每个脚本文件拆分到自己的项目中,并使用基于时间的触发器单独触发它们。
因此,我需要的7个操作都有自己的项目和基于时间的触发器。
https://stackoverflow.com/questions/60925575
复制相似问题