2

我试图让我在计时器上运行的一个函数调用另一个需要参数的函数,我的代码是本教程的一个非常轻微的修改版本我已经删除了 sms 调用并且以下代码有效

function testFunction() {
   var label = GmailApp.getUserLabelByName('GApps/Test');
   var emails = label.getThreads();
   var now = new Date().getTime();
   for(i in emails){
      CalendarApp.createEvent('You got an Email!', new Date(now+60000), new Date(now+60000));
   }
}

我在 gmail 中设置了一个过滤器,当我从某个电子邮件地址收到一封电子邮件时,它会在我从某个电子邮件地址收到的任何电子邮件上应用子标签测试(来自 GApps)标签系列,当我收到来自该地址的电子邮件并且它获取标签测试上面的代码时在我的 google 日历中添加一个条目,其中包含活动名称 You got 和 Email!从当前时间开始和结束一分钟

function gmail2cal(labLoc, event) {
   var label = GmailApp.getUserLabelByName(labLoc);
   var emails = label.getThreads();
   var now = new Date().getTime();
   for(i in emails){
      CalendarApp.createEvent(event,  new Date(now+60000), new Date(now+60000));
   }
}

现在这里是相同的代码,用字符串替换了变量,假设这个函数是用两个参数调用的,它们的值与前面的代码块相同,它应该功能相同

function launcher(){
   gmail2cal('GApps/Test','You got an Email!');
}

但是当我在 Google Apps 脚本编辑器中使用运行功能按钮时,功能 gmail2cal 不起作用,我不明白为什么

4

1 回答 1

2

Google Apps 脚本编辑器中的运行命令不会将任何参数传递给您的函数。因此,如果您执行该函数gmail2cal,它会在没有任何参数的情况下被调用,这会导致labLocevent评估为undefined. 可能GmailApp.getUserLabelByName(undefined);什么都不返回,因此你的函数什么都不做。

在这种情况下,您可能希望launcher从“运行”菜单执行该函数,该函数将gmail2cal使用它需要的 2 个参数执行。

于 2012-06-12T07:57:15.010 回答