2

タイマーで実行する 1 つの関数に、パラメーターを必要とする別の関数を呼び出させようとしています。私のコードは、このチュートリアルをわずかに変更したバージョンです。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));
   }
}

特定のメール アドレスから受信したメールにサブラベル テスト (GApps から) ラベル ファミリを適用するフィルターを gmail に設定しました。このアドレスからメールを受信し、上記のコードのラベル テストを取得したときにYou got と Email! というイベント名で、Google カレンダーにエントリを追加します。現在時刻から 1 分で開始および終了する

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));
   }
}

ここで、変数を文字列に置き換えた同じコードを次に示します。この関数は、前のコード ブロックと同じ値を持つ 2 つのパラメーターで呼び出され、同じように機能する必要があります。

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

しかし、Google アプリのスクリプト エディターで関数の実行ボタンを使用すると、関数 gmail2cal が機能せず、その理由がわかりません

4

1 に答える 1

2

Google Apps Script エディタの Run コマンドは、関数にパラメータを渡しません。したがって、関数を実行するgmail2calと、パラメータなしで呼び出され、 と の両方labLoceventに評価されundefinedます。おそらくGmailApp.getUserLabelByName(undefined);何も返さないため、関数は何もしません。

この場合launcher、[実行] メニューから関数を実行することをお勧めします。その関数はgmail2cal、必要な 2 つのパラメーターを使用して実行されます。

于 2012-06-12T07:57:15.010 に答える