やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

Calc Pythonマクロ編集ツールAPSOを導入する

 拡張機能をインストールする。

成果物

手順

1. ダウンロードする

  1. メニュー→ツール拡張マネージャ
  2. ほかの機能をオンラインで取得リンクをクリックする
  3. ブラウザが起動する
  4. サイトの検索窓にAPSOを入力して検索する
  5. APSOサイトをクリックする
  6. サイトからapso.oxtファイルをダウンロードする
  7. apso.oxtファイルを任意パスに配置する

0 1 2 3 4

2. インストールする

  1. 拡張マネージャダイアログの追加ボタンを押下する
  2. apso.oxtファイルを選択する
  3. ライセンス条項を最下端までスクロールする
  4. 許可ボタンを押下する
  5. リストにAPSOが追加される

5 6 7 8

3. エディタを設定する

  1. 拡張マネージャダイアログのリストからAPSOを選択する
  2. オプションボタンを押下する
  3. エディター項目にplumamousepadなど任意のテキストエディタを入力する

9

4. Pythonコードを書く

  1. メニュー→ツールマクロPythonスクリプトの管理
  2. ダイアログのツリーにあるマイマクロをクリックする
  3. メニューボタンをクリックする
  4. プルダウンからモジュールの作成を選ぶ
  5. 新規モジュール名ダイアログにて任意モジュール名を入力する: user_func
  6. ツリーに作成されたモジュールをクリックする
  7. メニューボタンをクリックする
  8. プルダウンから編集を選ぶ
  9. エディタが起動する
  10. 以下のコードを書いて保存する
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# LibreOffice Calc ユーザ定義関数のPython版
def SUM_PY(*args):
    return sum(args)

A B C D E

5. 使ってみる(失敗)

  1. 任意セルに=SUM_PY(3,3,3)を入力する
  2. #NAME?と表示されてしまう

 失敗。期待値は9だった。Pythonスクリプトで書いた関数は参照できないのか?

6. Pythonシェルで使ってみる(成功)

  1. メニュー→ツールマクロPythonスクリプトの管理
  2. メニューボタンをクリックする
  3. プルダウンからPythonシェルを選ぶ
  4. SUM_PY(3,3,3)コードを入力する
  5. Enterキーを押下する
  6. 9が表示される
APSO python console [LibreOffice]
3.7.3 (default, Jul 25 2020, 13:03:44) 
[GCC 8.3.0]
Type "help", "copyright", "credits" or "license" for more information.
>>> 
>>> SUM_PY(3,3,3)
9

 成功した。

F

7. Pythonでユーザ定義関数を作れる?

 どうもBASICと同様の方法で簡単に作ることはできなさそう。

 拡張機能でなら頑張ればできるのかもしれない。大変そうなのでやらない。

所感

 ユーザ定義関数はBASICでしか書けない。Pythonで書きたかったのに……。

対象環境

$ uname -a
Linux raspberrypi 5.4.51-v7l+ #1333 SMP Mon Aug 10 16:51:40 BST 2020 armv7l GNU/Linux