Personal tools
You are here: Home Lights on Zope Categories Lotus Notes
« May 2012 »
Su Mo Tu We Th Fr Sa
    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    
Recent entries
評価経済社会 ぼくらは世界の変わり目に立ち会っている 岡田 斗司夫 (著) seko 2012-05-13
史上最強の哲学入門 東洋の哲人たち 飲茶 (著) seko 2012-05-12
史上最強の哲学入門 飲茶 (著) seko 2012-05-12
製造業が日本を滅ぼす 野口 悠紀雄 (著) seko 2012-05-10
サニーサイドエッグ 荻原 浩【著】 seko 2012-05-03
強運の持ち主 瀬尾 まいこ【著】 seko 2012-05-03
カラーひよことコーヒー豆 小川 洋子【著】 seko 2012-05-03
「長生き」が地球を滅ぼす―現代人の時間とエネルギー 本川 達雄【著】 seko 2012-05-02
日本全国津々うりゃうりゃ [単行本] 宮田 珠己 (著) seko 2012-05-02
遺伝子はダメなあなたを愛してる [単行本] 福岡伸一 (著) seko 2012-05-02
哲学的な何か、あと数学とか 飲茶【著】 seko 2012-05-01
哲学的な何か、あと科学とか 飲茶【著】 seko 2012-05-01
宇宙に外側はあるか 松原 隆彦【著】 seko 2012-05-01
世渡り 万(よろづ)の智慧袋―江戸のビジネス書が教える仕事の基本 田中 優子【著】 seko 2012-04-29
Recent comments
Re:フェルデンクライスメソッド112回目 おててニギニギ3 seko 2012-04-07
Re:フェルデンクライスメソッド112回目 おててニギニギ3 Papasan 2012-04-07
Re:ブッダのいる女子会 Reiko 2012-03-25
おしらせと追加 やぶい 2012-03-23
Re:上島珈琲閉店 えくぼの姉さんにもう会えない Papasan 2012-03-22
Re:上島珈琲閉店 えくぼの姉さんにもう会えない seko 2012-03-22
Re:上島珈琲閉店 えくぼの姉さんにもう会えない Papasan 2012-03-21
Re:上島珈琲閉店 えくぼの姉さんにもう会えない seko 2012-03-21
Re:上島珈琲閉店 えくぼの姉さんにもう会えない Papasan 2012-03-20
Re:荒俣 宏 (著) 「歌枕」謎ときの旅 通りすがり 2012-02-11
Re:http://papasan.mydns.jp/ の飛び先がマシンによって異なる seko 2012-02-11
Re:http://papasan.mydns.jp/ の飛び先がマシンによって異なる Papasan 2012-02-10
Re:フェルデンクライスメソッド 107回目 アスリートの脚になる seko 2012-01-29
Re:フェルデンクライスメソッド 107回目 アスリートの脚になる Reiko 2012-01-29
Recent trackbacks
ぼくはお金を使わずに生きることにした 紹介 感想 わかめになりたい 2011-12-02
au の HTC EVO がなかなか良かった話 tdtshのブログ 2011-05-25
逆転経済の反響 世界一のバイヤーになってみろ!!坂口孝則の本棚と雑文 2010-12-27
Who Moved My Cheese? 大学生の気ままな書評 おすすめ和書・洋書! 2010-10-30
sekoさんちからPOSTがあったけど・・・ PapaBlog 2010-09-12
Squid(キャッシュサーバーモード)を試してみる PapaBlog 2010-08-25
Apache 2.2のキャッシュ機能を使ってみる PapaBlog 2010-08-08
愛と資本主義 中村うさぎ ばみの乱読日記 と猫雑貨。 2010-08-07
自転車用鞄(かばん)通販 鞄専門【かばん通販】 2010-06-09
Flowplayerがバージョンアップしてスッキリしていた PapaBlog 2010-06-06
荻原規子 「レッドデータガール はじめてのお化粧」 ゼロから 2010-06-01
加納朋子「モノレールねこ」 ご本といえばblog 2010-04-29
武蔵境でWiMAX電波を追ってみる においの事件簿 2010-04-19
荻原規子 「レッドデータガール はじめてのお使い」 ゼロから 2010-04-18
 
Document Actions

Lotus Notes

Up one level

Document Actions

Lotus Notesのメールをgmailに転送してiPodで見るためのpythonスクリプト

by seko posted at 2009-12-18 23:18 last modified 2009-12-18 23:18

Lotus Notesのメールをgmailに転送して、iPodで読めるようにしてみました。 ただ、メールによってはiPodで見ると文字化けします。gmailをブラウザで見ると問題ありません。 ただでさえ難しい漢字のコードですが、メールが絡んでくるとますます分かりませんね。

    # -*- coding: utf-8 -*-
    """
    Lotus Notesに届いたメールをgmailに転送する
    ボディは140文字で切る
    Version 0.90
    2009/12/18
    """
    import smtplib
    from email.MIMEText import MIMEText
    from email.Header import Header
    from email.Utils import formatdate
    import win32com.client ## COM モジュールをインポート
    import datetime
    import time

    def get_forward_mail_list(DBServer,DBFile,base_time):
        """
        base_time以後のメールリスト返す
        """
        mail_lst=[]
        nSs=win32com.client.Dispatch("Notes.NotesSession") ## NOTES COM オブジェクトを開く
        nDb = nSs.GetDataBase(DBServer, DBFile)  ## DBのオブジェクト
        view = nDb.GetView("$Inbox")
        doc = view.GetLastDocument ## Viewの一番下の文書を設定
        date_t = doc.GetItemValue('DeliveredDate')

        while doc:
            date_t = doc.GetItemValue('DeliveredDate')
            #DeliveredDateの型がうまく処理できないので、原始的に処理する
            DeliveredDate = datetime.datetime(date_t[0].year,date_t[0].month,date_t[0].day,
                        date_t[0].hour,date_t[0].minute,date_t[0].second)
            if DeliveredDate > base_time:
                subject = doc.GetItemValue('Subject') ##題目を取る
                body = doc.GetItemValue('Body')
                #id = doc.GetItemValue('$MessageID')
                send_to = doc.GetItemValue('SendTo') #タプルになっている
                mail_from = doc.GetItemValue('From')

                mail_dic ={} # メールの内容をディクショナリにする
                mail_dic['subject'] = subject[0]
                mail_dic['DeliveredDate'] = DeliveredDate
                mail_dic['body'] = body[0][:140]
                mail_dic['from'] = mail_from[0]
                mail_lst.append(mail_dic)
                doc = view.GetPrevdocument(doc)
            else:
                print "break"
                break
        return mail_lst

    def send(from_addr, to_addr, msg):
        # 認証のないSMTPから送る
        # SMTPの引数を省略した場合はlocalhost:25
        s = smtplib.SMTP('xxx.xxx.xxx.xxx')
        s.sendmail(from_addr, [to_addr], msg.as_string())
        s.close()

    def send_via_gmail(from_addr, to_addr, msg):
        # gmail から送る
        s = smtplib.SMTP('smtp.gmail.com', 587)
        s.ehlo()
        s.starttls()
        s.ehlo()
        s.login('xxxx@gmail.com', 'password')
        s.sendmail(from_addr, [to_addr], msg.as_string())
        s.close()

    def create_message2(from_addr, to_addr, subject, body, encoding):
        # 'text/plain; charset="encoding"'というMIME文書を作ります
        msg = MIMEText(body, 'plain', encoding)
        msg['Subject'] = Header(subject, encoding)
        msg['From'] = from_addr
        msg['To'] = to_addr
        msg['Date'] = formatdate()
        return msg

    def get_from_addr(mail_from,from_addr):
        """
        転送するメールアドレスがインターネットメールなら、送り主の名前を送信者にする
        """
        if '@' in mail_from:
            addr = mail_from
        else:
            addr = from_addr
        return addr

    if __name__ == '__main__':
        DBServer = "CN=xxx/O=xxx" # notes サーバ名
        DBFile = "mail\xxxx.nsf"    #メールのファイル指定
        from_addr_def = 'Lotus Notes <xxx@xxx.com>' # 転送時に表示されるメールアドレス
        to_addr = 'xxxxx@gmail.com' # 転送先のアドレス

        start_time = datetime.datetime.now() # プログラムを起動した時間
        #プログラム起動時には指定時間前までのメールを転送
        base_time = start_time - datetime.timedelta(hours = 2) # 2時間前
        interval = 2 * 60 # チェックの感覚を秒で指定
        while 1:
            print start_time,base_time
            mail_lst = get_forward_mail_list(DBServer,DBFile,base_time)
            # 最後のメールの時間を基準時間にしてそれ以降のメールを転送する
            try:
                base_time = mail_lst[0]['DeliveredDate']
            except:
                base_time = base_time
            # 古いものから先に送るために並び替える
            mail_lst.reverse()
            print base_time
            for line in mail_lst:
                subject = "FW:" + line['subject'] + ' : ' + line['from']
                body = line ['body']
                mail_from = line['from']
                from_addr = get_from_addr(mail_from,from_addr_def)
                print line['DeliveredDate']
                print from_addr
                print subject
                print body
                print
                msg = create_message2(from_addr, to_addr, subject, body, 'utf-8')
                send(from_addr, to_addr, msg)
            time.sleep(interval)
The URL to Trackback this entry is:
http://lightson.dip.jp/blog/seko/2155/tbping

できる Groove 2007 Windows Vista対応

by seko posted at 2008-02-11 12:39 last modified 2008-02-11 18:06

できる Groove 2007 Windows Vista対応

Grooveとは、クライアント同士がP2P(ピアツーピア)方式で通信を行なう、サーバ不要のグループウェアです。グループウェアの草分けである「Lotus Notes」(ロータス・ノーツ)を作ったRay Ozzie氏が設立したGroove Networks社によって開発され、現在はマイクロソフトから提供されています。
サーバや管理者がいらないので、小人数のプロジェクトにはちょうどいいなと思って見ていたのですが、2001年ごろちょっと話題になったり、本も出たりしたのですが、その後噂を聞くこともありませんでした。

昨日、秋葉原のヨドバシカメラでマイクロソフトのコーナで売っているのを見つけました。
でも25000円もするし、相手がいないと成り立たないソフトなので、最低50000円の出費となります。

そこでまずは、本を買って読んでみることにしました。
結果、このソフトでなければダメだという業務がほとんどないため、話題にならないのも当然という気がしました。
ロータスノーツが全盛だったころとは、回りの環境が大きく変わってしまったんですね。

今なら、Grooveの機能のほとんどはWEBアプリケーションでも快適に利用できます。
P2Pでファイルを共有するという機能は、今でも特徴的ですが、便利に使えるのは、個人事業者が他者とファイルの共有をするという場面くらいしか思い付きません。

このソフトは、グループウエアであり、相手にもソフトをインストールしてもらう必要があります。仮りに私がこのソフトをどんなに気にいっても、他人に25000円を出させるのは難しいです。グループウエアとして使うためには、たくさんの人にインストールしてもらわなければなりません。不可能です。

マイクロソフトもこんなソフトを売るくらいなら、サービスの一貫として無料で提供した方がトータルとしては有利ではないかと思います。
でも、考えてみると、多くの人が使うであろうカレンダーの共有やチャットは他のサービスの方が便利です。ロータスノーツから受け継いだ文書データベースの機能は、作り込みが必要ですし、いずれにしろGrooveをいれている人しか利用できないのですから、わざわざそんなツールを選ぶ人がいるとは思えません。

ソフト自体を買わなくて良かったです。
興味のあるかたは、60日期限つきの試用版がありますので、それを利用しましょう。

http://office.microsoft.com/ja-jp/groove/default.aspx

The URL to Trackback this entry is:
http://lightson.dip.jp/blog/seko/1534/tbping

マインドマップ図解術 マインドマップ練習帳 マインドマップ仕事術

by seko posted at 2007-01-22 23:20 last modified 2007-01-23 22:29

マインドマップ図解術  マインドマップ練習帳  マインドマップ仕事術


昨日、秋葉原の書泉にいったら三冊まとめて売っていました。

図解術は多くの例が載っていていいですね。
仕事術も実際の仕事にどんな感じで使えるのかがわかります。
練習帳は、小学校のドリルのような感じです。
それぞれ、1000円ですのでとてもお買い得だと思います。

仕事術には、

などの情報がありました。

The URL to Trackback this entry is:
http://lightson.dip.jp/blog/seko/1128/tbping

Lotus NotesのデータをEXCELで取る

by seko posted at 2004-07-06 00:00 last modified 2006-05-04 20:52

pythonからNotesのデータが取れるのであれば、EXCELからも当然取れるということにふと気づく。次の例はsheet1に取りたいフィールド名を書いておくと、sheet2にデータが取れるというものである。


実際に使う場合は、EXCELの範囲に名前を付けておき、一行目にフィールド名を書くようにして、列の追加や削除が合った場合でもプログラムの変更が必要ないようにしておくと良い。そうしておけば、ユーザがEXCELの機能だけを使って、フィールドの追加、削除をすれば、ほしいデータが取れるようになる。また、NOTESへのリンクをお尻につけているので、EXCEL上のリンクをダブルクリックするとNOTESに飛ぶこともできる。


Sub getSubject()
Dim nSs As Object, nDb As Object
Dim nDocs As Object, nDoc As Object

Application.Visible = True
DBServer = "CN=hoge/O=hoge" 'Server name
DBFile = "hoge.nsf" 'Database name
Set nSs = CreateObject("Notes.NotesSession")
Set nDb = nSs.GetDataBase(DBServer, DBFile)
Set nDocs = nDb.GetView("hoge") 'select View
N = nDocs.EntryCount
Set nDoc = nDocs.GetFirstDocument

For i = 1 To N
For j = 1 To 5
field = Sheet1.Cells(1, j)
Sheet2.Cells(i, j).Value = nDoc.GetItemValue(field)(0)
Next
Sheet2.Cells(i, 6).Value = nDoc.NotesURL
Set nDoc = nDocs.GetNextDocument(nDoc) ' select next Document
Next

End Sub
The URL to Trackback this entry is:
http://lightson.dip.jp/blog/seko/14/tbping

Lotus Notesのデータをpythonで取る

by seko posted at 2004-06-16 00:00 last modified 2006-06-17 20:50

LotusNOTESを使っている企業も多いのではないだろうか?導入時点では、その選択は正しかったが、その後インターネットやWEBが主流になって肩身が狭い。特に問題なのは、データが他のシステムに渡しにくいところだ。もちろん、そうしたソフトはあるが高いし、一般ユーザが使うのは困難だろう。そこで、NOTESのデータをデータベースに取り込んでZopeで見せたいなどというときは、次のようなプログラムでpythonからNotesのクライアント経由でデータをテキストファイルに落とすことができる。RubyでNotesにアクセスする方法を参考にさせていただいた。注意点としては、ビューで選択されば文書を全部落とすので、適切なビューを選ぶこと。競合文書も落としてしまう。
必要なもの:




import string,win32com.client ## COM モジュールをインポート

nSs=win32com.client.Dispatch("Notes.NotesSession") ## NOTES COM オブジェクトを開く

DBServer = "CN=hoge/O=hoge" ## replace server name

DBFile = "hoge.nsf" ##replace DB name

nDb = nSs.GetDataBase(DBServer, DBFile) ## DBのオブジェクト

view = nDb.GetView("hoge") ## select view

doc = view.GetFirstDocument ## Viewの一番上の文書を設定

o=open('c:/temp/output.txt','w') ## opent output file



fieldlist=('hoge1','hoge2','hoge3','hoge4') ## 取りたいデータのNOTES上のフィールド名をリストに

i=1

while doc: ## 行がなくなるまで実行

outline=[]

for j in fieldlist:

fieldvalue=doc.GetItemValue(j)[0] ##listになっているのでデータのある一つ目だけを取り出す

fieldvalue=string.replace(fieldvalue,'\r\n',' ') ##改行をスペースに変換

fieldvalue=string.replace(fieldvalue,'\\','\\ ') ##\を\+spaceに変換

fieldvalue=string.replace(fieldvalue,'\t',' ') ##TABをspace二つに変換

outline.append(fieldvalue)

oline=string.join([str(x) for x in outline],'\t')+ '\t'+doc.NotesURL+'\n' ##Join with tab and add URL

print i,oline

o.write(oline.encode('cp932')) ##shift-jisで書き込む

i=i+1

doc=view.GetNextDocument(doc)

o.close()


Powered by Plone, the Open Source Content Management System

This site conforms to the following standards: