Upgrade to Pro — share decks privately, control downloads, hide ads and more …

getrest関数を作るぞ!

 getrest関数を作るぞ!

LibreOffice Calcで自分の関数を作る。
REST からJSONを取得してCalcに表示したい。

果たして出来るのだろうか?

https://github.com/arachan/getrest

Yusuke arakawa

May 11, 2018
Tweet

Other Decks in Programming

Transcript

  1. Unicodeエスケープ ISO 8859‑1の文字コードで無理やり2byte文字を表現する方式 例えば、 大牟田市 \u5927\725f\u7530\u5e02 上記のように変換されて表示されてしまう。 REST APIのデータの文字コードの規定は無い。(要出典) 既定は無いのでISO

    8859‑1で返してしまう。 新しい規格にはUTF‑8で返せという規定があるらしい。(要出典) Unicodeエスケープされてしまう。 これじゃ、扱えない。(´;ω;`)
  2. どう作る? LibreOffice API LibreOfficeが真面に用意しているものはこれぐらいです。 後はOpenOfficeのリファレンスを見ろ。 Bugzilla ‑ Write a PyUNO

    tutorial/walktrough 絶望しかない。(´;ω;`) 誰か!簡単なCalcの関数を作ったやつはいねーか!
  3. IDLファイル IDL UNO APIとPythonとの橋渡し XGetRest.idl #include <com/sun/star/uno/XInterface.idl> module org {

    module openoffice { module addin { module sample { interface XGetRest : com::sun::star::uno::XInterface { /** swaps the content of the incoming array */ string GetRest( [in] string str ); }; }; }; }; };
  4. IDLからコンパイル IDLを書いただけでは動かない。 コンパイルする必要がある。 idl > urd > rdb urdファイル作成 $IDLC="C:\Program

    Files\LibreOffice\sdk\bin\idlc" $IDIST="C:\Program Files\LibreOffice\sdk\idl" $IDLC -I $IDIST XGetRest.idl RDBファイル作成 これでgetrest.pyの内容がLibreOffice UNOと紐づけられた。 $REMERGE="C:\Program Files\LibreOffice\program\remerge.exe" $REMERGE ../rdb/sample1.rdb UCR XGetRest.urd