ページ

title

告発\金沢地方検察庁\最高検察庁\法務省\石川県警察御中
弁護士と裁判官が共同で確定させた傷害・準強姦被告事件判決の再捜査要請に係る石川県警察珠洲警察署提出書面の情報公開

殺人未遂事件幇助の被告訴人: 木梨松嗣弁護士(金沢弁護士会)、岡田進弁護士(金沢弁護士会)、長谷川紘之弁護士(金沢弁護士会)、若杉幸平弁護士(金沢弁護士会)
名誉毀損罪の被告訴人: モトケンこと矢部善朗弁護士(京都弁護士会)、小倉秀夫弁護士(東京弁護士会)
市場急配センター株式会社 石川県金沢市駅西本町5丁目10番20所在
作成管理者: 石川県鳳珠郡能登町字宇出津 廣野秀樹
金沢地方検察庁御中

2020年7月24日金曜日

* LibreOfficeのワープロWriterからのTwitter投稿と,pythonマクロ

* LibreOfficeのワープロWriterからのTwitter投稿と,pythonマクロ
:LOGBOOK:
CLOCK: [2020-07-24 金 09:56]
:END:

:CATEGORIES: パソコン

〉〉〉:Emacs: 2020-07-24(金曜日)09:56  〉〉〉

 昨日の午前中は,まずLibreOfficeでpythonスクリプトを実行できるようにしました。エラーが出るようになったまま放置していたのですが,モジュールの読み込み先を指定することなどで対処しました。

 しかし,いくら調べてもカーソルのある行のテキストを読み込み,変数に入れる方法がわかりませんでした。すごく基本的な操作と思うだけに不思議ではあるのですが,Wordのマクロでもなかなか情報が見つからなかったという経験はあります。

```
#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys
sys.path.append('/...../anaconda3/envs/py_env/lib/python/site-packages')
import twitter
import uno
import traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
import datetime


def IsertTmeSartText( ):
oDoc = XSCRIPTCONTEXT.getDocument()
oText = oDoc.getText()
#oSText = "[ Text Start ] " + "\n"
#oEText = "\n" + "[ Text End ] "
#oText.insertString(oText.getStart(), oSText , False) #文頭
#oText.insertString(oText.getEnd(), oEText, False) #文末
#oText.uno:GoToPrevPara
#oText.uno:GoToNextPara

#oText.uno:EndOfParaSel
#oText.uno:Copy

# create a cursor
cursor = oText.createTextCursor()

# insert the text into the document
now = datetime.datetime.now()
time = '〉〉〉:Linux LibreOffice: {0:%Y-%m-%d %H:%M:%S} 〉〉〉'.format(now)

def cursor():
return oDoc.getCurrentController().getSelection().getByIndex(0)

oText.insertString(cursor(), time, 0 )
```


 少し手を加えてましたが,上記が日付のテキストを挿入するpythonマクロになります。実際にカーソル位置に「〉〉〉:Linux LibreOffice: 2020-07-24 10:08:42 〉〉〉」と挿入されます。

 前から少し思い出していたのですが,通常のLibreOfficeのマクロ,キーボードマクロでカーソル位置の行のテキストをクリップボードにコピーするコードを作成し,それにクリップボードの内容でツイートする外部コマンドを実行するものを使っていたようです。

 これは次のコードになりますが,Shellという関数の実行以外は,自動で生成されるコードになります。とても簡単だったのですが,あとで思わぬ不具合に気がつくことになります。

```

REM ***** BASIC *****



sub TweetLine
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:GoToEndOfLine", "", 0, Array())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:StartOfLineSel", "", 0, Array())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:GoToEndOfLine", "", 0, Array())


Shell("/home/a66/shell_script/kk_clipboard_tweet.rb", 1, "", False)

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Save", "", 0, Array())

end sub
```

 最初,普通にTwitterへの投稿が出来ていたのですが,別のファイルを開くとできなくなり,できなくなったのにあとで投稿されていることに気がついたのです。原因は,アプリの終了後に投稿処理が行われるということでした。

 いろいろとやっているうちに,あらかじめLibreOfficeを立ち上げ,空白のページを開いた状態で,別のファイルを読み込めば,その読み込んだファイルからもマクロでTwitterに投稿できるということに気が付きました。一応問題解決ですが,そのあと終了時,LibreOfficeが異常終了します。

 LibreOfficeを自分で終了させるまでは普通に使えているので,大きな問題はないと思います。ワープロソフトのLibreOfficeでTwitterに投稿できるようになったのは大きいです。Windows10のWordのファイルがほぼ同じように扱えています。

〈〈〈:Linux Emacs: 2020-07-24(金曜日)10:28  〈〈〈

0 件のコメント:

コメントを投稿