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

getrest関数を作るぞ!

 getrest関数を作るぞ!

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

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

https://github.com/arachan/getrest

Avatar for Yusuke arakawa

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