先日作った RTM へタスクを登録するスクリプトを少し改良してみました。変更したのは次の 2 点です。
- 入力をキャンセルした場合、処理を中断するようにした
- 複数回連続してタスクを登録できるようにした
InputBox 関数ではプロンプトが表示されている状態でキャンセルすると、空の文字列が返ってくるようになっていました。それゆえ、最初のスクリプトではキャンセルすると unnamed task として RTM に登録されてしまいます。これは InputBox の入力をファイルに書き込む前に、 if 文で空の文字列の場合は処理を中断するようにしました。
複数回の繰り返しは、入力→ファイル書き込み→メール送信という一連の流れを関数にまとめ、それを while True として止めない限り延々とループするようにしてみました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | ' タスクの入力 Dim task Sub InputTask() task = InputBox("タスクを入力する", "RTM quick") If len(task) = 0 then WScript.Quit end if end Sub ' ファイルの操作 Sub WriteFile() Set objFso = WScript.CreateObject("Scripting.FileSystemObject") Set objFile = objFso.OpenTextFile("rtmtask.txt", 2, False) If Err.Number > 0 then WScript.Echo "Open Error" else objFile.WriteLine task end if objFile.Close Set objFile = Nothing Set objFso = Nothing end Sub ' メールの送信 Sub SendMail() Set ws = WScript.CreateObject("WScript.Shell") ws.Run "rtm_sendmail2.bat", 7 WScript.Echo("タスク追加 OK") end Sub ' 単発で登録する場合 ' TaskAdd() ' 繰り返し登録する場合 ' キャンセルでループを抜ける Do while True TaskAdd() Loop Sub TaskAdd() InputTask() WriteFile() SendMail() end sub |
これで好きなだけタスクを登録できるようになり、少し便利になりました。