アップルスクリプトを使ったテキストファイルの書き出し

ここでは、ファイルメーカーの計算機能で作成された各レーコード固有のHTMLデータを、それぞれ別々のファイルに書きだす。

ファイル名は、既にレコードにデータとして記録されているPhotoCD番号と画像番号を組み合わせて算出する。

ファイルメーカーの一項目を取り出してファイルに書き込む作業はそれ程難しくは無い。筆者のサンプルファイルと下記の解説を参考に挑戦してみていただきたい。


(なを、筆者はスクリプトエディタの設定を英語モードで使用している。どうしても、過去のプログラミングの癖から抜け出せず、「日本語スクリプト」に適応できない。その辺は、御容赦願いたい。)


アップルスクリプト追加機能の設定

ファイルの作成・削除・書き込のための追加機能としてInfo-macで公開されている「Script Tools」(Mark Alldritt氏作成のFreeware)に含まれるFile IOを使用した。FileIOファイルを機能拡張フォルダのスクリプト追加機能フォルダに入れると使用可能になる。



基本ルーティン

アップルスクリプトは、多くのプログラム言語と同様に、命令文が入れ子になって記述される。基本ルーティンはその一番外側にかかれる。ファイルメーカーの特定のファイル「ANT PCD DATA」に対する命令は、以下の囲いの中に記述する。

tell application "ファイルメーカー Pro"

activate

tell database "ANT PCD DATA"

--ここに、データに対する命令文を記述する。

end tell

end tell


全てのレコードを順次操作するルーティン

基本ルーティンの内部に、以下のように全てのレコードを一巡するルーティンを入れる。

--まず、メニュー「選択解除」を行って全レコードを対象とする。

if (enabled of (menu item 1 of menu 5 of application "ファイルメーカー Pro")) then

do menu (menu item 1 of menu 5 of application "ファイルメーカー Pro")

end if

--全レコード数をカウントし変数「CountRecord」に記憶する。

set CountRecord to count of record

--レコード数1から順番に「CountRecord」まで表示する。

repeat with c from 1 to CountRecord

go to record c of current layout

--ここに、レコード単位の命令文を記述する。

end repeat


各レコードのデータを読み取り、ファイルに書き込む

各レコードから、HTML出力計算の結果(項目名:HTMP_Page)を読み取り、そのページのデータ(PhotoCD名と、画像番号)に基づいてファイル名を算出する(例:PCD0419-04.html)。

--HTMLファイルへの出力データを変数「myContents」に記憶する。

set myContents to (get data cell "HTML_Page" of record c) as text

--出力ファイル名を計算し変数「HTMLfName」に記録する。

set PDisc to (get data cell "PCD Name" of record c) as string

set PFrame to get data cell "画像番号" of record c

set HTMLfName to (PDisc & "-" & PFrame & ".html") as string

--ファイル書き込みのルーティンに変数としてフォルダ名、ファイル名、書き込みデータを渡す。変数「Root」はユーザーによって入力された出力フォルダ名。

my MakeFile(Root, HTMLfName, myContents)


ファイル出力ルーティン

以下のルーティンを使い、テキストデータを所定のフォルダに所定のファイルとして記録する。

on MakeFile(HTMLfPath, HTMLfName, myContents)

set MyFullName to HTMLfPath & HTMLfName as string

try

create file HTMLfName in alias HTMLfPath

on error

delete file alias MyFullName

create file HTMLfName in alias HTMLfPath

end try

set MyFile to open file alias MyFullName for writing

write file MyFile text myContents

close file MyFile

end MakeFile


出力フォルダの指定

話は前後するが、スクリプトの一番最初に以下の一行を入れ、指定された出力フォルダ名を変数「Root」に記憶する。

set Root to (choose folder with prompt "Choose PCD Image folder :") as string


FileIO 追加機能の解説

Script Tools Suite:

Copyright ゥ 1993 Mark Alldritt
All Rights Reserved

create file: create a new text file

create file string -- name of new file to be created
[in alias] -- a folder where the new file is to be placed
[owner string] -- signature code of application which should own the new file

delete file: delete a file

delete file alias -- the file to be deleted


open file: open a text file

open file alias -- the file to be opened
[for reading/writing/update] -- type of file access
Result: small integer -- open file reference number

close file: close an open text file

close file small integer -- open file reference number

write file: write a line of text to an open file

write file small integer -- open file reference number
text string -- text to be written