1

私はJavascriptの知識がほとんどありませんが、このコードを使用してGMailのエクスペリエンスを向上させたいと考えています。動作しますが、エラーも発生します。Googleスプレッドシートでデバッガを実行すると、2つの機能が誤動作しているように見えます。

TypeError:nullのメソッド「getThreads」を呼び出すことはできません。(59行目)

次の実行トランスクリプトを使用

GmailApp.getUserLabelByName([FollowUp])

GmailApp.getUserLabelByName([FollowUp / 1undefined])

挿入されたコメント: GMail API呼び出しgetThreads(およびその他)に関する情報がここにあります:https ://developers.google.com/apps-script/class_gmaillabel#getThreads

私が得られないのは、なぜそれがFollowup / 1undefinedを呼び出しているのか->なぜそれが未定義なのか?フォローアップ/1日

そして、別の関数での別のエラー:

メソッドmoveThreadsT​​oInbox(。(26行目)が見つかりません

処刑記録には何もありません

コード全体は次のとおりです。

// Adapted from:
// http://gmailblog.blogspot.com/2011/07/gmail-snooze-with-apps-script.html
//
// To setup:
// - From the |Run| menu select |setup|
//   - if prompted to authorize, do so, and then repeat this step.
//
// - Verify the script is set to be triggered to run
//   - |Triggers| menu |Current script's triggers...|
//   - 3 triggers should exist to call e.g. 
//     - dailyUpdate, Time Driven, Daily

function getLabelName(i, labelSuffixString) {
  return "FollowUp/" + i + labelSuffixString;
}

function setup() {
  for (var i = 1; i <= 7; ++i) {
    GmailApp.createLabel(getLabelName(i, "days"));
    GmailApp.createLabel(getLabelName(i, "weeks"));
  }
  GmailApp.createLabel("FollowUp");
}

function moveToInbox(page) {
  GmailApp.moveThreadsToInbox(page);
  GmailApp.markThreadsImportant(page);
}

function cleanOldFollowUpLabels() {
  var searchString = "-label:inbox label:FollowUp";
  for (var i = 1; i <= 7; ++i) {
    searchString += " -label:" + getLabelName(i, "days");
    searchString += " -label:" + getLabelName(i, "weeks");
  }
  searchString = searchString.replace(RegExp("/", "g"), "-");
  Logger.log("cleanOldFollowUpLabels() Search String:");
  Logger.log(searchString);
  var followUpLabel = GmailApp.getUserLabelByName("FollowUp");  
  var page = null;
  // Get threads in "pages" of 100 at a time
  while(!page || page.length == 100) {
    page = GmailApp.search(searchString, 0, 100);
    Logger.log("found: " + page.length);
    if (page.length > 0)
      followUpLabel.removeFromThreads(page);   
  }
}

function update(labelSuffixString) {
  var oldLabel, newLabel, page;
  var followUpLabel = GmailApp.getUserLabelByName("FollowUp");
  for (var i = 1; i <= 7; ++i) {
    newLabel = oldLabel;
    oldLabel = GmailApp.getUserLabelByName(getLabelName(i, labelSuffixString));
    page = null;
    // Get threads in "pages" of 100 at a time
    while(!page || page.length == 100) {
      page = oldLabel.getThreads(0, 100);
      if (page.length > 0) {
        followUpLabel.addToThreads(page);
        if (newLabel) {
          // Move the threads into "today’s" label
          newLabel.addToThreads(page);
        } else {
          moveToInbox(page);
        }     
        // Move the threads out of "yesterday’s" label
        oldLabel.removeFromThreads(page);
      }  
    }
  }
}

function dailyUpdate() {
  update("days");
}
function weeklyUpdate() {
  update("weeks");
}

こちらも:http://pastie.org/4790086.js

4

1 に答える 1

0

mm ..同僚の助けを借りて、私たちは自分の問題に対する答えを見つけました。毎日のトリガー、毎週のトリガー、更新のトリガーの3つのトリガーを実行しました。更新トリガーは、毎日および毎週のトリガーによって呼び出され、入力がないため、必要ありませんでした。それがエラーの原因でした。ここで、エラーが発生するかどうか、およびスクリプトが機能するかどうかを確認する必要があります。

于 2012-09-27T13:19:17.760 に答える