WSH For Office2000
Written 10/21/99
Outlook 2
受信トレイの構造
受信トレイはディレクトリ構造と同じようにツリー構造になっています。
受信トレイを folder とすると、 受信トレイの中のメールアイテムのコレクションは folder.Items で拾えますが、 フォルダのコレクションは folder.folders で拾えます。 個々のフォルダは folder.folders(1)、 folder.folders(2)、 …で拾えます。 その個々のフォルダについて同じことを繰り返すことによって、 受信トレイの下のすべてのメールアイテムを拾うことができます。
    scripts/title2.ws (ファイルに保存にしてください)
    ------------------------------------------------------------
    <JOB ID="title2">
     <REFERENCE GUID="{00062FFF-0000-0000-C000-000000000046}"/>
    
     <SCRIPT LANGUAGE="JavaScript">
      var myOlApp = WScript.CreateObject("Outlook.Application");
      var myNameSpace = myOlApp.GetNameSpace("MAPI");
      var folder = myNameSpace.GetDefaultFolder(olFolderInbox);
      GetMailTitles(folder);
      
      //そのフォルダの下のすべてのメールのタイトルを表示する
      function GetMailTitles(folder) {
        var i;
        for(i = 1; i <= folder.Items.Count; i++)
            WScript.Echo(folder.Items(i).Subject);
        
        for(i = 1; i <= folder.Folders.Count; i++)
            GetMailTitles(folder.Folders(i));
      }
     </SCRIPT>
    </JOB>
 
フォルダの作成・削除
受信トレイの下にフォルダを作成するには Folders コレクションの Add メソッドを使います。
    var folder = myNameSpace.GetDefaultFolder(olFolderInbox);
    folder.Folders.Add("極秘フォルダ");
 
受信トレイの下に「極秘フォルダ」という名前のフォルダができます。 [表示] − [フォルダ一覧] で確認できると思います。

逆にフォルダを削除するにはフォルダオブジェクトの Delete メソッドを使います。

    var folder = myNameSpace.GetDefaultFolder(olFolderInbox);
    folder.Folders("極秘フォルダ").Delete();
 
メールの移動
メールの移動にはメールアイテムの Move メソッドを使います。
    var folder = myNameSpace.GetDefaultFolder(olFolderInbox);
    folder.Items(1).Move(folder.Folders("極秘フォルダ"));
 
例えば、ある期間経ったメールを受信トレイの下のフォルダーに移動するスクリプトは 次のようになります。
    scripts/movemail.ws (ファイルに保存にしてください)
    --------------------------------------------------------------
    <JOB ID="title2">
     <REFERENCE GUID="{00062FFF-0000-0000-C000-000000000046}"/>
    
     <SCRIPT LANGUAGE="JavaScript">
      var myOlApp = WScript.CreateObject("Outlook.Application");
      var myNameSpace = myOlApp.GetNameSpace("MAPI");
      var folder = myNameSpace.GetDefaultFolder(olFolderInbox);
      
      //受信トレイの下のフォルダをfに登録しておく
      var f = new objfolders();
      var folders = folder.Folders;
      var nfolders = folders.Count;
      for(var i = 1; i <= nfolders; i++)
        f[folders(i).Name] = folders(i);
      
      var mails = folder.Items;
      var nmails = mails.Count;             //メールの数
      var oldDate = FromToday(0, 0, -60);   //60日前
      for(var i = nmails; i >= 1; i--)
        //約2ヶ月以上前のメールは移動する
        if(mails(i).ReceivedTime < oldDate) {
            //移動先のフォルダ名
            MonthFolder = GetFolderName(mails(i).ReceivedTime);
            if(!f[MonthFolder]) {   //もしフォルダがなかったら
                //フォルダを追加
                folder.Folders.Add(MonthFolder);
                //フォルダをfに登録
                f[MonthFolder] = folder.Folders(MonthFolder);
            }
            mails(i).Move(f[MonthFolder]);   //移動
        }
      
      //年月をyyyymmの形式で文字列にして返す
      function GetFolderName(d) {
        var jsd = new Date("" + d); //JavaScriptのDateオブジェクト
        var y = jsd.getYear();
        var m = jsd.getMonth() + 1;
        return "" + (y < 100 ? y + 1900 : y) + (m < 10 ? "0" + m : m);
      }
      
      function objfolders() {}
      
      function FromToday(year, month, day) {
        var d = new Date();
        year += d.getYear();
        if(year >= 100)
            year += 1900;
        month += d.getMonth();
        day += d.getDate();
        return new Date(year, month, day);
      }
     </SCRIPT>
    </JOB>
 
受信から約60日経ったメールを月ごとのフォルダに移動しています。 ときどきこのスクリプトを走らせるとメールを整理することができるでしょう。
Back