1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【iOS】Pythonista3で共有シートを使う。

Last updated at Posted at 2020-08-15

はじめに

iOSの共有メニューからPythonista3のスクリプトを起動する方法のメモ。

共有メニュー

iOSには他のアプリにデータを受け渡すことができる共有メニューがあり、次のようなアイコンを様々な場面で見かけます。
share
これをタップすると出てくるメニューには、標準のAirDropメッセージメールの他にインストールされているアプリで共有シートに対応したアプリが並び、そしてその時の操作に対応したアクションも表示されます。

Run Pythonista Script

Pythonista3をインストールすると、共有メニューのアクションの欄Run Pythonista Scriptというメニューが追加されます。

このメニューをタップすると、あらかじめ登録しておいたスクリプトのアイコンが並びます。

share これはあらかじめ**./Examples/Extension**にプリセットされているスクリプトです。 ここに自分で作ったスクリプトを登録することができるので、ほかのアプリからデータを受け取り、加工してから保存するという使い方もできます。

次のサンプルは受け取った画像を時計回りに90度回転してコンソールに表示します。

test.py

import appex
import console

def main():
  if not appex.is_running_extension():
    console.hud_alert('共有シートから実行して下さい。','error',2)
    return

  image = appex.get_image()
  if not image:
    console.hud_alert('イメージが見つかりません。','error',2)
    return
  
  # 画像を回転してコンソールに表示する。
  image = image.rotate(270, expand=True)
  image.show()
  
if __name__ == '__main__':
  main()

共有メニューから呼び出さないと実行できないようにしてあるので、次はこれを共有メニューから実行できるようにします。

Share Extension Shortcuts

Pythonistaの設定画面からShare Extension Shortcutsの登録ができますが、写真アプリなどの共有メニューからも可能なので、写真アプリからやってみます。

  1. 画像を開いた状態で共有メニューを開きます。
  2. Run Pythonista Scriptをタップします。
  3. Editをタップすると出てくる「⊕」アイコンをタップします。
  4. ファイル選択ダイアログが表示されるので、登録したいスクリプトを選択します。動画ではExamples/Extension/test.pyを選択してます。
  5. いろいろ設定できますが、今回は登録するだけなので、Addをタップします。
  6. いま登録したスクリプトのアイコンが追加されてれば登録成功です。
  7. アイコンをタップすればスクリプトが実行されます。
    A18DCF13-7504-4514-8E2E-DB7373B23A45.gif

上のGIFのもとの動画のリンクです。

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?