読者です 読者をやめる 読者になる 読者になる

LINEでメッセージを送信する方法

その他 その他-Tips その他-自作アクション紹介

このブログでは、ず〜〜っとTrigger IFTTT Recipeがランディングページ一位を独走していたのですが(『Workflow レシピ』の検索流入)、それをSend Message via LINEがあっさり抜いてしまいました。

Send Message via LINEは先日のアップデートでなくなってしまいましたので、代替となる方法を紹介します。

1. Shareアクションを使う

↓ のように、送りたいもの(テキストや画像)の下にShareアクションを配置するだけ。
f:id:four_or_three:20170328211510p:plain:w250

実行すると ↓ のように共有メニューが立ち上がりますので、LINEを選択するとメッセージを送信できます。
f:id:four_or_three:20170328211519p:plain:w250

2. 自作アクション「Send Message via LINE」

先日の記事で、Send Message via LINEを自作するのは比較的簡単と書きましたが、誤りでした。
URLスキームを使用してテキストを送信するのは簡単なのですが、画像を送信するURLスキームは利用不可能ですので、訂正させていただきます。画像が送れるようになっていたことを失念していました。

そんなわけで、ここで紹介する自作アクションが送信できるのはテキストだけです。Shareと比較して便利なところは、ウィジェットから実行するとWorkflowを起動することなくLINEアプリへジャンプする点でしょうか。
画像が送信できないので、使い勝手は微妙かもしれません。


▼このリンクをタップするとインポートされます
https://workflow.is/workflows/2acd7f4597ec44a8b14a9c8fb036b86d


[Input](単体)
Text, Number, URL

[Result]
Workflow Inputをそのまま出力


使い方

↓ のように、送りたいテキストの下にRun Workflowを配置し、Workflowに「Send Message via LINE」を選択します。
f:id:four_or_three:20170328211618p:plain:w250

実行すると、LINEアプリが起動し、送信先を選択する画面が表示されますので、選択してメッセージを送信します。

WorkflowだけでOAuth2.0認証を実行する (Pocket API)

その他 その他-ワークフロー紹介 その他-Tips

WorkflowがAppleに買収され、iOSのより深い部分の機能にアクセスできるようになる事が期待されますが、その一方でサードパーティのアプリに関するアクションの漸減が予想されています。
既に昨日のアップデートで、PocketやLINEなどのアクションが削除されました。

削除されたものは、自分でなんとかするしかありません。
Send Message via Lineなど、URLスキームを内部で実行しているだけのアクションは比較的容易ですが、Get Items from PocketなどはGet Contents of URLを使用してWeb APIにアクセスする必要がありますので難易度はかなり高くなります。
ですが、アプリの無料化により特に英語圏でユーザーが激増しますので、Web APIを簡単に利用できる自作アクションもぼちぼち出てくるのではないかと思います。


Web APIを利用する上でしばしば突き当たるのが、OAuthによるユーザー認証の壁です。
今回は、PocketのAPIを例にしてWorkflowだけでOAuth2.0認証を行う方法を簡単に紹介したいと思います。
なお、OAuthのバージョン1.0は2.0とは比較にならないほど複雑ですので、Workflowでなんとかしようとは考えないほうがいいでしょう。

後日、今回獲得したアクセストークンを使用してPocket APIにアクセスする自作アクションを紹介する予定です。

前準備

  1. Pocket APIにアプリを登録
     
    https://getpocket.com/developer/を開き、ログインして「CREATE NEW APP」をクリック
    f:id:four_or_three:20170324153658j:plain  
    モバイルビューが用意されていませんので、PCからのほうが作業しやすいです。
     
    次に、特にこだわりがなければ、↓ のスクリーンショットと同じように設定し、「CREATE APPLICATION」をクリック
    f:id:four_or_three:20170324161826p:plain
     
    この次の画面で表示される「CONSUMER KEY」が認証作業で必要になります。 f:id:four_or_three:20170324162200p:plain

  2. ワークフローをインポート
    https://workflow.is/workflows/290070d6dc7746feb6830b175849851e
    Pocket APIのOAuth2.0認証を実行するワークフローです。
    既に完成されていますので、認証するだけならワークフローを実行して指示通りにタップしていくだけで30秒ほどで終わります。

認証の流れ

Pocket APIを使用するには、コンシューマーキーとアクセストークンの2つが必要です。
コンシューマーキーは既に持っていますので、アクセストークンの取得が認証作業の最終目標になります。

認証処理は3つのステップに分かれています。

  1. コンシューマーキーを使用して、リクエストトークンを発行
  2. リクエストトークンをPocketアプリへ渡し、認証ボタンを押してリクエストトークンを有効化する
  3. 有効化されたリクエストトークンを使用し、アクセストークンを発行

↓ のドキュメントと比較しながら一つずつ見ていきます。
Pocket Developer Program: Pocket Authentication API: Documentation

1. リクエストトークンの発行

ドキュメントのSTEP 2の部分です。
Get Contents of URLを用いてPocketのサーバにコンシューマーキーを送り、リクエストトークンを取得します。

▼ドキュメント
f:id:four_or_three:20170324171743p:plain

▼Workflow
f:id:four_or_three:20170324165310p:plain:w250

Get Contents of URLから

{"code":"リクエストトークン"}

というDictionaryが出力されますので、Get Dictionary Valueで値を取り出し、変数に格納してこのステップは終了です。

2. リクエストトークンの有効化

ドキュメントのSTEP 3,4の部分です。
前のステップで取得したリクエストトークンをURLスキームを用いてPocketアプリへ渡し、表示された画面で「認証」をタップしたのち、Workflowに戻ってきます。

▼ドキュメント
f:id:four_or_three:20170324171150p:plain

▼Workflow
f:id:four_or_three:20170324172207p:plain:w250

この処理により、リクエストトークンが有効化されます。
Pocket側からWorkflowに返却されるレスポンスはありません。

3. アクセストークンの発行

ドキュメントのSTEP 5の部分です。
前のステップでリクエストトークンが承認されましたので、それを用いて最終目標のアクセストークンを取得します。

▼ドキュメント
f:id:four_or_three:20170324174305p:plain

▼Workflow
f:id:four_or_three:20170324174714p:plain:w250

Get Contents of URLから

{"access_token":"アクセストークン","username":"ユーザー名"}

というDictionaryが出力されますので、Get Dictionary Valueで値を取り出してOAuth2.0認証は完了です。


コンシューマーキーとアクセストークンの2つがPocket APIの利用に必要ですので、どこかに控えておきましょう。
この2つは他人に知られてはいけないものですので、ワークフローに書き込んだままシェアしてしまわないよう気をつけて下さい。

あらゆる種類のショートカットリンクをウィジェットに設置する自作アクション「Bookmarkable」

その他 その他-ワークフロー紹介 その他-自作アクション紹介

f:id:four_or_three:20170323212136j:plain

ウィジェットにURLを開くショートカットを簡単設置するワークフローです。
普通のウェブページの他、Evernote、OmniFocus、Trello、GoodReader、HandyFlowy、Ulysses、Google DriveSoundCloudなど、個別のURL Schemeやユニバーサルリンクが割り当てられている項目であれば何でもウィジェットにショートカットを作成することができます。


[Input](単体)
Text, URL

[Result]
Inputをそのまま出力

使い方

URLの登録
表示名1|||URL1
表示名2|||URL2
...


このように表示名とURLのペアを記述したテキストをBookmarkableにInputすることで登録できます。テキストは何行でもOK。
あるいは、

URL1
表示名|||URL2
...


こんなふうにURLだけの行も読み込めます。 URLだけ記述されている場合は、そのURLに対してGet Nameを実行して表示名とします。

  • Workflow内でテキストをInput
    f:id:four_or_three:20170323212227p:plain:w250

  • Action ExtensionでURLをInput
    f:id:four_or_three:20170323212242p:plain:w250

  • Workflowの外部からURLスキームでテキストを取り込む

workflow://run-workflow?name=Bookmarkable&input=URLエンコードしたテキスト


workflow://run-workflow?name=Bookmarkable&input=clipboard


Bookmarkableに登録できる項目数は無制限です。

表示

ウィジェットでBookmarkableを実行するだけ。
f:id:four_or_three:20170323213849p:plain:w250

11件を超えた場合は、9件ずつに分割表示されます。
f:id:four_or_three:20170323213931p:plain:w250

Editで登録項目の編集ができます。
f:id:four_or_three:20170323213947p:plain:w250

インポート

https://workflow.is/workflows/964eb76068d74822acc8ff831fec0886

使用開始までの手続き

フローの先頭あたりに設定できる項目がまとまっていますので、適宜設定の変更をしてください。

  • append_position : 項目を追加する位置
    • prepend : 先頭に追加
    • append : 末尾に追加
  • file_name : iCloud Driveに保存するテキストファイルの名前
    Bookmarkableを複製して複数使用する場合は、このファイル名を変更してそれぞれのワークフローが独立して動作できるようにする必要があります。

使用例

ウェブページのURLを登録

↓ このようなワークフローで登録できます。
https://workflow.is/workflows/dd8308ca903f453ba4b4d52373443dc3

HandyFlowyから登録する機能拡張スクリプト
var workflow_name = "Bookmarkable"
var title = document.title.replace(/ - WorkFlowy$/,"");
var topic = location.href.match(/.+\/(.+)/)[1];
var hflowy_url = "handyflowy://open?topic=" + topic;
var input_str = title + "|||" + hflowy_url;
var wflow_url = "workflow://run-workflow?name=" + encodeURIComponent(workflow_name) + "&input=" + encodeURIComponent(input_str) + "&x-success=handyflowy://";
window.open(wflow_url);

1行目のBookmarkableのところが登録先のワークフロー名ですので、必要に応じて変更してください。

Workflow 1.7.3 CUSTARD 更新内容(2017年3月24日)

その他 その他-未分類

https://workflow.is/whatsnew

  • MapsのアクションがApple Mapsによって強化
  • Translate Textの使用APIMicrosoft Translateに変更
  • Get Street View Image、Chrome、Pocket、LINE、Telegram、Uber、ワークフローをギャラリーに投稿する機能のサポートを削除
  • PDFファイルを画像へ変換する機能を追加
    • Photos & VideoカテゴリのアクションにPDFファイルをInputできるようになった
  • Workflow Input変数が変数トレイに常時表示されるようになった
  • VoiceOverを使ったアクションの削除に関する問題を修正

Workflowが開発チームごとAppleに買収された件について、reliphoneさんが今後の予想などを記事にされています。
reliphone.jp

追加の情報があれば追記していくということですので、Safariのタブにキープしておきましょう。

Save File

Actions Actions-Documents

f:id:four_or_three:20170322212042p:plain:w250

InputしたファイルをiCloud Drive、Dropbox、Boxに保存します。

iCloud Drive
  • Ask Where to Save
    • ON : ピッカーを起動して手動で保存先を指定
    • OFF : 保存先をあらかじめ指定
  • Destination Path (optional)
    • フォルダを指定すると、Inputしたアイテムが持つファイル名を使用してそのフォルダに保存
      • 存在しないフォルダを指定するとエラーが出る
    • ファイル名まで含めたフルパスを指定すると、アイテムが持つファイル名を無視してそのファイル名で保存(Resultもそのファイル名にリネームされる)
  • Overwrite If File Exists
    • ON : すでにファイルが存在する場合に上書き
    • OFF : 自動で連番を付与して上書きを回避

複数のアイテムをInputできる条件
以下の2つを満たした場合のみ

  • Ask Where to Save : OFF
  • Destination Pathにフォルダを指定

[Input](単体、複数)
Files

[Result]
セーブされたFiles


Dropbox
  • Ask Where to Save
    • ON : ピッカーを起動して手動で保存先を指定
    • OFF : 保存先をあらかじめ指定
  • Destination Path (optional)
    • フォルダを指定すると、Inputしたアイテムが持つファイル名を使用してそのフォルダに保存
      • 存在しないフォルダを指定すると自動で作成される
    • ファイル名まで含めたフルパスを指定すると、アイテムが持つファイル名を無視してそのファイル名で保存
      • Inputが複数の場合は、ファイル名を指定してもフォルダ名として解釈される
  • Overwrite If File Exists
    • ON : すでにファイルが存在する場合に上書き
    • OFF : すでにファイルが存在する場合にワークフローを中断

[Input](単体、複数)
Files

[Result]
セーブされたDropbox Files


Box
  • Ask Where to Save
    • ON : ピッカーを起動して手動で保存先を指定
    • OFF : 保存先をあらかじめ指定
  • Destination Path (optional)
    • フォルダを指定すると、Inputしたアイテムが持つファイル名を使用してそのフォルダに保存
      • 存在しないフォルダを指定するとエラーが出る
    • ファイル名まで含めたフルパスを指定すると、アイテムが持つファイル名を無視してそのファイル名で保存
      • Inputが複数の場合は、ファイル名を指定するとエラーが出る
  • Overwrite If File Exists
    • ON : すでにファイルが存在する場合に上書き
    • OFF : すでにファイルが存在する場合にワークフローを中断

[Input](単体、複数)
Files

[Result]
セーブされたBox Files

Get File

Actions Actions-Documents

f:id:four_or_three:20170320210440p:plain:w250

iCloud Drive、Dropbox、Boxからファイルを取得します。

iCloud Drive
  • Show Document Picker
    • ON : ピッカーを起動して手動でファイルを一つ選択し取得
    • OFF : ファイルまたはフォルダをあらかじめ指定
  • File Path
    • ファイルを指定するとそのファイルを取得
    • フォルダを指定するとフォルダに含まれるファイルを全て取得
  • Error If Not Found
    • ON : ファイルが存在しない場合にワークフローを中断
    • OFF : 中断せずResultをNo Itemとしてワークフローを続行

[Result]
Files


Dropbox
  • Show Document Picker
    • ON : ピッカーを起動して手動でファイルを一つまたは複数選択し取得
    • OFF : ファイルまたはフォルダをあらかじめ指定
  • File Path
    • ファイルを指定するとそのファイルを取得
    • フォルダを指定するとフォルダに含まれるファイルを全て取得
  • Error If Not Found
    • ON : ファイルが存在しない場合にワークフローを中断
    • OFF : 中断せずResultをNo Itemとしてワークフローを続行
  • Select Multiple
    • ON : 複数選択できるようにする
  • Initial Path (optional)
    • ピッカーを起動したときの初期パスを指定

[Result]
Dropbox files


Box

設定項目はDropboxと同じ

[Result]
Box files