CSVファイルからWordPressに自動投稿するプログラムの作り方[ #Mac #AppleScript ]
CSVファイルにデータの一覧をまとめておいて、それを元にWordPressに投稿するプログラムのサンプルです。大量の記事を移し替える必要があるときなどに。
こんなことしなくてもWordPressにはxml-RPCが備えてあるのですが、諸事情で違う方法が必要なときにどうぞ。
CSVファイルを用意します
まず、データをまとめます。横軸に日付、タイトル、本文など。2行目まではヘッダ行とします。編集にはExcelやCalcなどを使うことと思いますが、書き出したCSVファイルはテキストエディタで開いて文字コードをShift_JISに、改行コードをMac用に変更してください。
AppleScriptの内容
つぎにAppleScriptでプログラムを書きます。「アプリケーション->ユーティリティ」に入っている「AppleScriptエディタ.app」を使います。
書く内容は次のとおり。
- CSVファイルを読み込む
- Safariで新規タブを開く
- WordPressの新規投稿→データを挿入
コード
--CSVファイルの読み込み
--(ファイル選択ダイアログ)
set aFile to choose file
set csvList to readAndParseCSV(aFile) of me
--Safariをうごかす
tell application "Safari"
activate
reopen
repeat with x from 3 to count of csvList
set csvLine to item x of csvList
tell window 1
--新規タブ
set current tab to (make new tab)
--WordPress新規投稿ページへ
set URL of document 1 to "http://*yourWPaddress*/wp-admin/post-new.php"
delay 3
--投稿フォームに入力
--(投稿日時)
do JavaScript "document.getElementsByName('aa')[0].value = '" & item 1 of csvLine & "'" in document 1
do JavaScript "document.getElementsByName('mm')[0].value = '" & item 2 of csvLine & "'" in document 1
do JavaScript "document.getElementsByName('jj')[0].value = '" & item 3 of csvLine & "'" in document 1
do JavaScript "document.getElementsByName('hh')[0].value = '" & item 4 of csvLine & "'" in document 1
do JavaScript "document.getElementsByName('mn')[0].value = '" & item 5 of csvLine & "'" in document 1
--(タイトル)
do JavaScript "document.getElementsByName('post_title')[0].value = '" & item 6 of csvLine & "'" in document 1
--(本文)
--本文を入力するために、まずは「テキスト」エディタをクリックしてONにする
delay 1
do JavaScript "document.getElementById('content-html').click()" in document 1
do JavaScript "document.getElementsByName('content')[0].value = '" & item 7 of csvLine & "'" in document 1
end tell
end repeat
end tell
--ファイル読み込み関数
on readAndParseCSV(aFile)
-- ファイル読み込み
set aFilePointer to open for access aFile
set aData to read aFilePointer as text
close access aFilePointer
-- 配列に格納
set AppleScript's text item delimiters to return
set aList to text items of aData
set AppleScript's text item delimiters to ","
repeat with i from 1 to count of aList
set item i of aList to (text items of item i of aList)
end repeat
--配列を返す
return aList
end readAndParseCSV
このプログラムはあまり細かいところまで気を遣ったものではありません。自分でSafariを立ち上げて、目的のWordPressにログインしてから実行してください。実行すると、Safariの画面はこんなふうになるはずです。
解説
Safariを立ち上げるのにtell applicationをして、そのあと、WordPressを操作するに「do JavaScript」を使っています。これはつまり、Safari上でjavascriptを操ってフォームの入力をさせているという意味です。ちなみに同じようなことをさせるには、システムイベント(「tell Application “System Events”」)で画面のクリックやキー入力を操作する方法もあります。
投稿をしたあとは放っておくと自動的に下書き保存されるので、保存ボタンを押す仕草は入っていません。明示的に保存させたい場合はClickを利用すればよいでしょう。またWordPressへの自動ログインなど、ご自身でアレンジして使ってみてください。