首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google脚本:触发器不工作或脚本只运行一次

Google脚本:触发器不工作或脚本只运行一次
EN

Stack Overflow用户
提问于 2020-03-30 15:07:23
回答 1查看 179关注 0票数 0

我是Google Scripts的新手,所以我已经在这个问题上挣扎了几天了。通过多个来源,没有一个有和我一样的问题。

我为我的脚本设置了一个基于时间的触发器,将CSV从我的Gmail导入到工作表中。发送的电子邮件是每天从DV360提取的报告,然后用于填充Data Studio Dashboard。

我的第一个问题是,要么是触发器没有正常工作(这可能是不太可能的),要么是我的代码有问题。我注意到的一件奇怪的事情是,触发器对其中一个报告有效,但对其余6个报告无效。

我在这个项目中有多个脚本,所有这些都从不同的电子邮件导入不同的CSV附件,每个都在谷歌工作表文件中填充自己的选项卡。

一旦我运行了一次脚本,并且它填充了相应的工作表,即使我的收件箱中有一封带有较新附件的电子邮件,它也不会再次运行(例如,如果我第二天运行脚本,它不会使用特定日期的报告填充工作表)。

下面是我使用的代码。

代码语言:javascript
复制
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);
    }
  } 
}

提前感谢您的帮助!

EN

回答 1

Stack Overflow用户

发布于 2020-03-31 15:56:04

解决方案很简单。

将每个脚本文件拆分到自己的项目中,并使用基于时间的触发器单独触发它们。

因此,我需要的7个操作都有自己的项目和基于时间的触发器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60925575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档