启动带参数的函数

时间:2012-06-12 06:24:23

标签: javascript google-apps-script

我正在尝试使用一个函数,我在计时器上运行另一个需要参数的函数,我的代码是this tutorial的一个非常轻微修改的版本我删除了短信调用,以下代码工作

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)标签系列中应用子标签测试,当我收到来自此地址的电子邮件并获得标签测试时上面的代码在我的谷歌日历中添加了一个条目,其中包含您的活动名称和电子邮件!从当前时间开始和结束一分钟

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应用程序脚本编辑器中使用运行功能按钮时,函数gmail2cal不起作用,我不明白为什么

1 个答案:

答案 0 :(得分:2)

Google Apps脚本编辑器中的“运行”命令不会将任何参数传递到您的函数中。因此,如果您执行函数gmail2cal,则会在没有任何参数的情况下调用它,这会导致labLocevent评估为undefined。可能GmailApp.getUserLabelByName(undefined);没有返回任何内容,因此您的函数不会执行任何操作。

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