Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

(VIMから)OutlookにPythonでTask登録 or Notification

$
0
0

社内プロキシきつくて、Outlookしか使えない人のために

Outlookのタスク機能は、めちゃくちゃ凄い

  • Todoixxだー、Wundexxxだー言うまえに、Outlookつかいこなせてる?
  • どうせ会社は、Outlook強制だろ?!
  • Outlookのタスク登録って、めっちゃ高機能!
  • めっちゃ凄いけど、登録が面倒くさくて誰も使ってない

Pythonの身軽さを利用

  • Pythonでソース作れば、色々連携できるしアイデア次第で自由
  • Notificationみたいにも使える
  • 期限つきもPostも設定可能(期限は、手動で設定すればいいけど)

Vimmer?

  • VimからPython呼びだして、OutlookにTask登録できるよ
  • Vimじゃなくても、Python実行すればできる

今回の例はVimをインターフェースにタスクを流し込む

  • Vimで何かを書く
  • [:PostOutlookTask]すると、書いてる文章をOutlookのTaskに登録する
  • filenameにPathつっこめば、Pythonだけでも実行できる

win32com.client

  • Outlook操作するwin32com.client準備してください
  • Anaconda環境ならデフォルトで入っているから大丈夫death

ソース

Outlook_alert_vim.py
# coding: utf-8importpytzimportsysfromdatetimeimportdatetime,timedeltaimportwin32com.clientaswcldefwin_time_norm(d):'''    OutlookのTimeFormatに変換    :param d: Datetime    :return: Type pytx Datetime    '''date=pytz.utc.localize(d)returndatedefpost_outlook_task(task_list):'''    Outlookにタスク登録をする・win32com.clientを準備すること・Anacondaならデフォルトで入っている    out_task.DueDate = s_win_day・日付を今日にすればNotificationがわりにも使える・期限をしていする場合は、e_win_dayを登録・edday(5日)で5日後アラートにしてる    :param task_list: VIMのText 1行目をSubject    '''stday=datetime.today()edday=datetime.today()+timedelta(days=5)s_win_day=win_time_norm(stday)e_win_day=win_time_norm(edday)outlook=wcl.Dispatch("Outlook.Application")fortaskintask_list:out_task=outlook.CreateItem(3)out_task.Subject=task[0]out_task.Body=task[1]out_task.StartDate=s_win_dayout_task.DueDate=s_win_day# out_task.DueDate = e_win_dayout_task.ReminderSet=Trueout_task.Save()defmain(args):filename=str(args[0])withopen(filename,mode="r",encoding='utf-8')asfh:data=fh.readlines()data=[t.strip().strip('\n')fortindataift]task_list=[]task_list.append((data[0],"\n".join(data)))post_outlook_task(task_list)if__name__=="__main__":main(sys.argv[1:])

s:python_fileの場所は、自分で指定してね。

_vimrc
"outlook_task_vim"{{{function!s:outlook_posttask_vim()"
    lets:python_file ="D:/Outlook_alert_vim.py"lets:file= tempname()silent execute ":write " . s:filesilent execute "!python " . s:python_file . ' ' . s:filecall delete(s:file)
    unlet!s:file
    unlet!s:py_script
endfunction augroup END"
command!-nargs=0 PostOutlookTask calls:outlook_posttask_vim()"}}}

Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>