趣味のためのMacに関するサイト > AppleScript > 一括処理 > 【AppleScript】ブログの記事1025サマリー(要約・抜粋)を更新する
一括処理

【AppleScript】ブログの記事1025サマリー(要約・抜粋)を更新する

投稿(ページも含めて)が現時点は全部で1025有ります。

ブログレイアウトはマガジンタイプを選択していますので、

各ページに10記事のサマリー(要約・抜粋)が表示されます。

その抜粋が自動選択ですと” ”タグが使用されレイアウトが崩れてしまいます。

その修正をさかのぼってする必要が有りました。

その手段として、構文を書くのがなれないものですのでGUI Scriptingで

しようとしましたが、ウインドウをクリックするポイントがずれてしまうと言うこと、

都度各アプリケーションのウインドウを開くので時間がかかってしまうことが有り、

なるべくAppleScript構文のみで動かすようにしました。

AppleScript、ecto、Jedit Xの組み合わせです。

記事の参照を調べ、本文を取得してタグと空白を正規表現で削除してから、

処理後の本文先頭の4文節を取得し、””タグを文節末に挿入して

サマリーに張り付けると言うものです。それをリピート文で繰り返します。

苦心した点は、

  1. 記事編集の参照を見つけるのに時間がかかった。
  2. 〃     を省略するとエラーになる。
  3. 〃   コマンド。
  4. 本文にtellしてもクリップボードにコピーされない。
  5. 文節を選択して動くときとエラーになる場合がある。(いずれもコンパイルはされる。)
  6. 本文の4行を選択したときに本文が三行以下のときのエラー処理。
  7. LapTimeが秒数が多いと指数表示になり、エラーになる。
  8. 記事のアップロードの間隔を5秒空けたが、ectoのプロセスが一時300になった。

などと、いろいろ苦労しましたが、サブサイトのテストを経て

サマリーの修正は終わりました。

1回もエラー無く終了したのは良かったと思います。

1426秒ですので、24分程度かかりました。

手動ですと、集中力が途切れたり、用事等もありますので一気に出来ません。

日中にメンテナンスモードにしての作業ははなかなかしづらいですので、

深夜か早朝に作業することになりますので大変です。

30分程度ですと、日中にウォッチしながら他の作業も出来ますので

AppleScriptでの操作は便利かと思います。

要約を作成

図1

要約を作成

他の言語ではもっと早く処理できるかもしれませんが、

この時間程度で目的の処理がおわれば私にとっては充分です。

——————後日談

要約(サマリー、summary)のさかのぼっての更新は出来ましたので

こんどは追記(footer、extended:ectoでのproperties)を更新しようとしたのですが

エラーが有って文字化けになってしまいます。

ちょっと悩みどころです。

いろいろ動作テストをして、目的の動作を達成した構文を後で見返してみると

この構文でよく動いたものだ。というものがあります。

ectoとAppleScriptに助けられていますね。

——————後日談2

ectoの追記(extended)にはHTMLで入力、アップロードしないと

正しく表示されないので、問題点が解決するまでの間に

サイトでの記事のエントリーナンバーとecto上での記事IDが一致しない問題が

有りましたので、追記エリアにはテキストなら文字化けが表示されないことに

注目して、entory numberをリピート文を使って入れてみました。

500記事をectoの追記エリアに入れるには27秒、

それをアップロードするには、14分20秒かかりました。全部で15分程度です。

たくさんの量の送信命令をectoのActivity Viewer側にdumpするので

エラーにならないかと心配しましたが、大丈夫でした。

AppleScriptにdelayを入れなくても大丈夫なようです。

しかし、しつこく参照にtellしないと、動かないのには困ります。

──────────後日談3

本文中に構文を書くと動作にエラーを起こすらしく構文が消えてしまいます。

そういえば、本文中に構文を書く方のブログを見ると

画像にしてあったり、テキストでも別エリアにしていますね。注意が必要でした。

  1. ──────────4行以下の場合4行──────────を追加
  2. tell application Jedit X
  3. activate
  4. open as POSIX file ここにパスを入力
  5. set paraNum to count paragraph
  6. if result 4 then
  7. result
  8. else if result < 4 then
  9. set paragraph (paraNum + 1) to return & ¬
  10. ────────── & resurn & ────────── & return & ────────── & ¬
  11. return & ──────────
  12. end if
  13. end tell

──────────後日談4

文中に各コードは、以後CrayonSyntaxHighlighterで書くことにしました。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

ページトップに戻る↑                           ページ一番下へ↓

About 1q3

ツールとしてのMacについてのメリットデメリットなどの事について書いています。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です