LoginSignup
1
1

More than 3 years have passed since last update.

AlfredのWorkflowで、移動したい日付入りのScrapboxページを開く

Posted at

前回、こちらの記事でAlfredのworkflowを使って日付いりのscrapboxページを開く方法を書きました。
AlfredのWorkflowを使って、今日の日付入りのScrapboxページを開く
今回はこのWorkflowを使い、移動したい日付入りのScrapboxページを開けるようにしたいと思います!

完成のイメージ

958d4249758f96502330bb82a1cdfaf3.gif

注意

  • この方法はAlfred4を基準に作成されました。
  • Powerpack userではない場合、Workflow機能はご利用できません。

手順

1. 空のWorkflowを作る

AlfredのPreference(command + ,(カンマ))に入り、左側のサイドバーから「Workflows」をクリックします。
その後、左下の「+」ボタンから「Blank workflow」を選択し、空のworkflowを作ります。
76f563031535e826ded78ae3ff8b2b9d.gif
image.png

2. Workflowを実行させるキーワードを設定する

先ほど作ったworkflowをクリックすると、右側に空のキャンバスが現れます。
キャンバスを右クリックし、「Inputs」→「Keyword」 を選択します。
Alfred検索窓からこのWorkflowを呼び出す時に使うキーワードを設定できます。

※「Argument Required」に設定した理由

  • workflowの目的が「移動したい日付を引数としてもらい、その日付をタイトルの形式と合わせたScrapboxページを開く」だけなので、input argumentの入力を必須にする必要があります image.png 22.png

3. 実行するスクリプトを作る

同じく、キャンバスを右クリックし「Action」→「Run Script」をクリックします。
下の画像のような画面が出ると、「Script」の部分に以下のコードを入力します

alfred_script.sh
/usr/bin/python opendiary.py $1

入力し終わったら「Save」を押しましょう。

※今回はLanguageを「/bin/bash」にして、shell script経由でopendiary.pyのPython Scriptを実行する予定です

33.png

4. 今日の日付入りのScrapboxページを開くPython Scriptを作成する]

python scriptを書く時に、こちらのWorkflow libraryがよく使われます。
https://github.com/deanishe/alfred-workflow
今回のworkflowもこのライブラリを活用して作ります。

4-1. Workflowにlibraryをインストール

作成中のworkflowを右クリックして「Open in terminal」クリックします。
image.png
現れたターミナルwindowに、以下のコマンドを打ち、実行させます

command
pip install --target=. Alfred-Workflow

下記のようなMessageが出たら、インストール完了です。

インストール完了メッセージ
Collecting Alfred-Workflow
Using cached Alfred-Workflow-1.40.0.tar.gz (92 kB)
Using legacy 'setup.py install' for Alfred-Workflow, since package 'wheel' is not installed.
Installing collected packages: Alfred-Workflow
Running setup.py install for Alfred-Workflow ... done
Successfully installed Alfred-Workflow-1.40.0

確認のため、「Open in terminal」と同じ方法で、「Open in Finder」をクリックします。
すると、このようにライブラリがインストールできたことを確認できます。
image.png

4-2. 実行するPythonファイルを作成

cotEditor(テキストエディターならなんでもOK)から新しい.pyファイルを作成します。
今回はファイル名はopendiary.pyにします。
空のファイルができたら、先ほどライブラリをインストールしたフォルダにtodays_diary.pyを置きます。
以下のようになればOKです。
444.png

4-3. Python Scriptの中身を入力する

opendiary.pyの中身を入力します。
今回はyyyy/mm/dd 作業ログというタイトル形式を持つページがGoogle Chromeで開く」コードを作成します。

opendiary.py
# encoing utf-8
# -*- coding: utf-8 -*-

import sys
import webbrowser
from datetime import datetime, date, timedelta
from workflow import web, Workflow

def main(wf):
    args = sys.argv[1] # input
    dcnt=int(args)

    project = 'my-project'#scrapboxプロジェクト名
    url1 = 'https://scrapbox.io/'
    url2 = '_%E4%BD%9C%E6%A5%AD%E3%83%AD%E3%82%B0'#'_作業ログ'のutf-8 coding ver.

    day = date.today().weekday()
    if dcnt != 1:
        od = datetime.strptime(str(args), "%Y%m%d").date()
    else:
        if day == 0:
            if dcnt == 1:
                od = date.today() + timedelta(days=dcnt)
            if dcnt == -1:
                od = date.today() + timedelta(days=-3)
        elif day == 4:
            if dcnt == 1:
                od = date.today() + timedelta(days=3)
            if dcnt == -1:
                od = date.today() + timedelta(days=dcnt)
        else:
            if dcnt == 1:
                od = date.today() + timedelta(days=dcnt)
            if dcnt == -1:
                od = date.today() + timedelta(days=dcnt)
    url_date = od.strftime("%Y/%m/%d")
    url = url1 + project + '/' + url_date + url2
    chrome_path = 'open -a /Applications/Google\ Chrome.app %s'#Google Chromeで開くためのパス設定
    webbrowser.get(chrome_path).open(url)

    wf.send_feedback()

if __name__ == '__main__':
    wf = Workflow()
    sys.exit(wf.run(main))

5. キーワードとPython Script実行を繋ぐ

マウスで2つのアイコンをつなげればOKです
image.png

これで完成です。

毎回scrapboxから遡らなくても、日付さえ知っていれば簡単なキーワードの入力だけでページが開けるのでかなり便利です。

1
1
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
1