前の記事でショートカットで単語帳を作って、さらにそれをカスタムしました。
今回は新たに「元の英語の文にチェックをいれたいな」と思ったのでさらに機能を追加していきます!
選択した単語をすべて大文字にできるようにします。
本当はボールドなんかを使った方が分かりやすそうだったんですが、現在は変換方法が確認できなかったので可能な大文字にしました。
それと、今回は変数や正規表現なんかも使っているので、少しだけ難易度が上がっています。
では、さっそく作っていきましょう!
前回ファイルの確認
前回作ったファイルを立ち上げます。いくつかパターンがあったと思いますが、英文が入って入れば基本的にはどれでもOK!
ここでは、「共有シート」を使ったパターンで進めていきます。
まずはファイルを複製しちゃいましょう。
「変数を設定」を追加する
「変数を設定」というアクションを一番はじめに追加します。
名前は「sentence」としておきます。
変数とは
変数について軽く説明を…。
変数というのはデータなどを入れておく“箱”のようなものです。
必要に応じて呼びして、データを使ったり、変更したりします。
ショートカットでは3つのアクションがあります。
- 「変数を設定」
- 「変数を追加」
- 「変数を取得」
今は、「変数を設定」を追加してください。
続いて変数の名前についてです。
変数には必ず名前を付けなければなりません。ラベル付けのような感じでしょうか?
名前は基本的には何でもOKです。プログラミングなんかだと基本的には英語ですが、ショートカットでは日本語も使えます。(「あ」でも「い」でもいいですし、「英文」などでも大丈夫です。)
「sentence」の変数を設定したことにより、変数の中に元の英文が追加されました。
変数を設定をもうひとつ追加する
さて、続きます…。もうひとつ「変数を設定」を追加します。
今度は変数を入れる場所は「それぞれを繰り返す」の後です。変数名は「word」としました。
これは選んだ単語を入れておくための変数です。
途中で別の操作が入るので、この変数に選んだ単語を元々の形で保存しておくために設定しました。
また、この変数は「それぞれで繰り返す」の中に入っているので、繰り返されるごとに変数の内容が変わっています。
まだ変数のアクションは続きます…。
今度は「変数に追加」を使います。入れる位置は最初のテキストの後です。
↓のデータが入った「テキスト」のアクションですね。
[繰り返し項目] : [翻訳済みのテキスト]
変数名は「words_card」としました。これで新しい変数が作られ、さらにここに上のテキストデータが追加されます。
「変数を設定」では変数の中身が入れ替えられてしまいますが、今度の「変数の追加」はどんどんデータが新しく増やされていきます。
ひとまず変数の追加が終わりました。
作られた変数は3つそれぞれ違うものが入っています。
- 「sentence」
元々の英文。 - 「word」
選択した単語、繰り返しが行われるごとに中身が変わる。 - 「words_card」
選択した単語と日本語、こちら繰り返されるごとにどんどん追加されていく。
英単語を大文字に変える
次は、選択した単語を大文字に変える処理を作ります。
まずは繰り返しの中の「変数に追加(words_card)」の後に「変数を取得」を入れます。
取得するのは変数の「word」です。まずはこれを大文字に変えます。
「大文字/小文字を変更」というアクションがあるので、これを「変数を取得」の後に追加してください。
値を「全てを大文字に変更」にします。
これで「word」から渡された単語が大文字になりました。
このデータを使って、「sentence」にある英文を書き換えていきます。
テキストを置き換える
続いては、変更を加えられる「sentence」データを読み込みたいので、「大文字/小文字を変更」の後の再び「変数を取得(sentence)」を入れます。
まず、「テキストを置き換える」というアクションを追加します。
大文字/小文字を区別をOFFに、正規表現という項目をONにします。
正規表現とは?
正規表現とは簡単にいうと特定の文字列ではなく、決まったパターンの文字列を変更するというものです。
例えば、「abc」という文字を「###」というように伏せ字にしたいとします。
「abc」だけを変えたいときは「abcを###に変更する」という作業をつくればいいのですが、
「def」も変更したい「bca」も…と増えていくと、たくさんのパターンを設定することが難しいです。
そうした時にアルファベット全てを変換するということはできます。
もちろん、アルファベットに限らず数字や記号を選択することも可能です。このように特定のパターンを検索するということが正規表現では可能です。
正規表現をつかって文字を指定する
操作に戻ります。
設置した「テキストを置き換える」のテキスト検索の中に正規表現を入れていきます。
- ^[繰り返し項目]\s|\s[繰り返し項目]\s|\s[繰り返し項目]$
という風にしてください。[繰り返し項目]は変数から設定してください。
正規表現ではパターンを指定する為に決まった書き方があります。
- ^ : 文の先頭
- $ : 文末
- \s : スペース
- | : 条件式のor いくつかパターンを指定したい時に使う
使ったものは↑のような意味になっています。
置き換えは「マジック変数」を使います。このボタンを使えばアクションの場所を直接指定してデータを持ってこれます。
「大文字/小文字を変更」の「テキスト」を選択します。
[テキスト]の前後に空白を追加してください。これは正規表現ではなく実際の半角のスペースを打ち込んでください。
これで「テキストを置き換える」の完成です。
続いて、この変換されたテキストを変数にします。
「変数を設定」を入れてください。変数名は「sentence」です。
これは、先ほどまで使っていた「sentence」のデータを大文字に変換された英文に変えるための処理です。
テキストの修正
一応ラストです!
1番最後にある「テキスト」のアクションを修正します。
以前は「繰り返しの結果」と「クリップボード」もしくは「ショートカットの入力」が入っていたと思いますが、これを削除します。
そして、新たに変数の「words_card」と「sentence」を追加します。順序はどういう形でもOKです。
ここでは…
現在の日付
[words_card]
[sentence]
…としました。
「words_card」には、抜き出した単語と訳した日本語が全て入っています。
「sentence」には選択した単語を大文字した英文が入っています。
これらをまとめてテキスト化しています。
さあ、これで完成です!
あとはテストをしてみましょう!
でも、これちょっとだけ問題点があります。
文頭や文末、改行した後にくる単語を選択してしまった場合に余分にスペースが入ってしまいます。
「そんなの気にしないよー」という人はここで完成でOKです。
正規表現で余分なスペースを削除する
まずは「繰り返しの終了」の後に「変数を取得(sentence)」を追加します。
「テキストを置き換える」を作ります。
テキスト検索を…
- ^\s|\s$
…としてください。これで文頭、文末のスペースを指定できました。
置き換えの項目には何も入れないでください。ここに何も入っていない場合は検索で指定されたものが削除されます。
今度は大文字/小文字を区別と正規表現どちらともONにしてください。
さらに「テキストを置き換える」の下に「テキストを置き換える」を2つ追加してください。
1つのテキスト検索を…
- (\n)(\s)(\w)
もうひとつのテキスト検索を…
- (\w)(\s)(\n)
…という風にしてください。
「\w」はアルファベットと数字アンダーバー
「\n」は改行です。
置き換えは2つとも同じです。
- $1$3
…という風にします。
これは検索した1文字目と3文字目ということです。
つまり、スペースだけを除外しています。
最後に「変数を指定(sentence)」を追加します。
テストしてみて問題がなければ完成です!
お疲れ様でした!
まとめ
ショートカットのアプリは重いので、プログラミング的に使うにはこれぐらいが限度かな…?と思っています。
前に簡単な画像処理なんかをやったみた時に十数分もかかってしまいました…。
しかも入力などデータがミスしていると繰り返しやらなきゃいけない。
拡張性があることはあまり向かないんですよね。
でも、昔はそんなもんだったのかな?と考えつつ、また何か作ってみたいなーと思います。
コメント