ScriptForgeはLibreOfficeをプログラム的に操作することを目的としたモジュール作成のためにLibreOfficeから提供される膨大なライブラリー群である。Pythonマクロ作成にはその一部であるクラスCreateScriptServiceを使う。
ScripyForgeはLibreOfficeのインストールと一緒にインストールされるがxubuntuを含むubuntuではシステムワイドなパッケージとして別個にインストールする:
sudo apt install python3-scriptfoge
またこのクラスを継承した各種ドキュメント用、インタフェース用のクラスが用意されてる。これらの説明はここにある。
ここではスプレッドシートCalcをPythonマクロで操作するために必要なそのサブクラスを使う。
このサブクラスで使える様々のメソッドの説明はここにある。
例題は「今開いているシートのセルA!に書かれている数値を読み込み、それに書かれていた数値に1を加えた数値を再度セルA1に書く出す」というものである:
# coding: utf-8
from __future__ import unicode_literals
from scriptforge import CreateScriptService
doc = CreateScriptService("Calc")
def increment_cell(args=None):
value = doc.GetValue("~.A1")
print(type(value))
value += 1
doc.SetValue("~.A1", value)
g_exportedScripts = (increment_cell, )
GetValue、SetValueが使ったメソッドで、引数の中の~はCalcで今開いているシートを指す。最後の行はこのモジュールでマクロとして登録する関数名をタプルで並べる。ここの例ではincrement_cellがそれである。
ScriptForgeなしでもマクロは書けるが、これを使った方がプログラムはすっきりする。