20260326

【全ドメイン】ATS (Apple Font Registration System)の内容のHTML出力 


【全ドメイン】ATS (Apple Font Registration System)の内容のHTML出力 

ダウンロードはこちらから
NOTE記事一覧ですnote.com

【スクリプトエディタで開く】 |

ATS_FONT_LIST_HTML_ALL.scpt
ソース
001#!/usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003(*
004ATS (Apple Font Registration System)の内容のTSV出力
005基本フォントで3000件程度あると思います
006デザイナーだと1万件超える人も多いかな
007PS名 フルネーム ファイルパスを出力します
008テキストファイルでだいたい1mb超ええるサイズになります
009fontregistry.userのDBから値を取得しています
010ATSNoの飛び番について
011ATSNoの番号が飛んでいる部分は
012未ダウンロード・未使用・廃番のassetフォントの予約分と思われます
013TSVをエクセルで読み込む場合は
014文字コードをUTF8指定で読み込んでください
015
016com.cocolog-nifty.quicktimer.icefloe *)
017----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
018use AppleScript version "2.8"
019use framework "Foundation"
020use framework "AppKit"
021use scripting additions
022property refMe : a reference to current application
023######################
024#DBファイルの複製
025set appFileManager to refMe's NSFileManager's defaultManager()
026set ocidTempDirURL to appFileManager's temporaryDirectory()
027set ocidUUID to refMe's NSUUID's alloc()'s init()
028set ocidUUIDString to ocidUUID's UUIDString
029set ocidSaveDirPathURL to ocidTempDirURL's URLByAppendingPathComponent:(ocidUUIDString) isDirectory:(true)
030#テンポラリ(起動時に削除される項目に作業用ディレクトリ)
031set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s init()
032ocidAttrDict's setValue:(511) forKey:(refMe's NSFilePosixPermissions)
033set listBoolMakeDir to appFileManager's createDirectoryAtURL:(ocidSaveDirPathURL) withIntermediateDirectories:true attributes:(ocidAttrDict) |error|:(reference)
034#DB元ファイル
035set ocidContainerDirPathURL to ocidTempDirURL's URLByDeletingLastPathComponent()
036set ocidDBFilePathURL to ocidContainerDirPathURL's URLByAppendingPathComponent:("C/com.apple.FontRegistry/fontregistry.user") isDirectory:(false)
037#DBコピー先パス
038set strSaveDBFileName to "fontregistry.user.sqlite" as text
039set ocidSaveDBFilePathURL to ocidSaveDirPathURL's URLByAppendingPathComponent:(strSaveDBFileName) isDirectory:false
040set strDBFilePath to ocidSaveDBFilePathURL's |path|() as text
041#DBコピー
042set listDone to (appFileManager's copyItemAtURL:(ocidDBFilePathURL) toURL:(ocidSaveDBFilePathURL) |error|:(reference))
043
044#出力ファイルパス
045set strOutputFileName to "output.tsv" as text
046set ocidOutputFilePathURL to ocidSaveDirPathURL's URLByAppendingPathComponent:(strOutputFileName) isDirectory:false
047set strOutputFilePath to ocidOutputFilePathURL's |path|() as text
048
049#HTML保存先
050set ocidHomeDirURL to appFileManager's homeDirectoryForCurrentUser()
051set ocidSitesDirPathURL to ocidHomeDirURL's URLByAppendingPathComponent:("Sites") isDirectory:(true)
052set ocidHTMLSaveDirPathURL to ocidSitesDirPathURL's URLByAppendingPathComponent:("FontList") isDirectory:(true)
053set ocidHTMLSaveDirPath to ocidHTMLSaveDirPathURL's |path|()
054set boolDirExists to appFileManager's fileExistsAtPath:(ocidHTMLSaveDirPath) isDirectory:(true)
055if boolDirExists is false then
056   set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s init()
057   ocidAttrDict's setValue:(448) forKey:(refMe's NSFilePosixPermissions)
058   set listDone to appFileManager's createDirectoryAtURL:(ocidHTMLSaveDirPathURL) withIntermediateDirectories:(true) attributes:(ocidAttrDict) |error|:(reference)
059   if (item 1 of listDone) is false then
060      set strErrorNO to (item 2 of listDone)'s code() as text
061      set strErrorMes to (item 2 of listDone)'s localizedDescription() as text
062      refMe's NSLog("■:" & strErrorNO & strErrorMes)
063      log "createDirectoryAtURL エラーしました" & strErrorNO & strErrorMes
064      return false
065   end if
066end if
067#出力ファイル HTML
068set strTime to doGetDateNo("yyyyMMdd_HHmmss") as text
069set strHTMLFileName to ("ATSFontsList." & strTime & ".html") as text
070set ocidSaveHTMLPathURL to ocidHTMLSaveDirPathURL's URLByAppendingPathComponent:(strHTMLFileName) isDirectory:(false)
071
072######################
073#コマンド実行
074#v2
075set strCommandText to ("/usr/bin/sqlite3 \"" & strDBFilePath & "\" \".headers off\" \".headers off\" \".mode tabs\" \"SELECT DISTINCT  ft.font_column || '" & tab & "' || nt.name_column || '" & tab & "' ||  fnt.full_name_column || '" & tab & "' ||  COALESCE(loc.family_name_column, '') || '" & tab & "' ||  COALESCE(loc.subfamily_name_column, '') || '" & tab & "' ||  ft.path_column FROM font_table AS ft JOIN fullname_table AS fnt ON ft.font_column = fnt.font_column JOIN name_table AS nt ON ft.font_column = nt.font_column LEFT JOIN loc_names_table AS loc ON ft.font_column = loc.font_column GROUP BY ft.font_column;\"   > \"" & strOutputFilePath & "\"") as text
076log "" & linefeed & strCommandText & linefeed & "" as text
077try
078   do shell script strCommandText
079end try
080######################
081#戻り値整形
082set strTab to ("" & tab & "") as text
083set strLF to ("" & linefeed & "") as text
084set strCR to ("" & return & "") as text
085#NSSTRING
086set listResponse to refMe's NSString's alloc()'s initWithContentsOfURL:(ocidOutputFilePathURL) encoding:(refMe's NSUTF8StringEncoding) |error|:(reference)
087set ocidReadStrings to (first item of listResponse)
088#改行をUNIXに強制
089set ocidReadStrings to (ocidReadStrings's stringByReplacingOccurrencesOfString:(strCR & strLF) withString:(strLF))
090set ocidReadStrings to (ocidReadStrings's stringByReplacingOccurrencesOfString:(strCR) withString:(strLF))
091set ocidReadStrings to (ocidReadStrings's stringByReplacingOccurrencesOfString:(strLF & strLF) withString:(strLF))
092#行末の改行を削除
093set boolHas to (ocidReadStrings's hasSuffix:(strLF)) as boolean
094if boolHas is true then
095   set ocidLength to ((ocidReadStrings's |length|()) - 1) as integer
096   set ocidReadStrings to ocidReadStrings's substringToIndex:(ocidLength)
097end if
098set ocidCharSet to refMe's NSCharacterSet's newlineCharacterSet()
099set ocidReadArray to ocidReadStrings's componentsSeparatedByCharactersInSet:(ocidCharSet)
100set ocidReadStrings to (missing value)
101set ocidSortedArray to refMe's NSMutableArray's alloc()'s init()
102repeat with itemLineString in ocidReadArray
103   
104   set ocidItemLineArray to (itemLineString's componentsSeparatedByString:(strTab))
105   ##ここで順番入れ替え
106   (ocidItemLineArray's exchangeObjectAtIndex:(0) withObjectAtIndex:(1))
107   set ocidJoinText to (ocidItemLineArray's componentsJoinedByString:(strTab))
108   (ocidSortedArray's addObject:(ocidJoinText))
109   set ocidItemLineArray to (missing value)
110   set itemLineString to (missing value)
111end repeat
112set ocidReadArray to (missing value)
113#ソート
114set ocidSortedArray to ocidSortedArray's sortedArrayUsingSelector:("localizedStandardCompare:")
115
116######################
117#本処理 HTML生成
118set ocidHomeDirURL to appFileManager's homeDirectoryForCurrentUser()
119set ocidSitesDirPathURL to ocidHomeDirURL's URLByAppendingPathComponent:("Sites") isDirectory:(true)
120set ocidHTMLSaveDirPathURL to ocidSitesDirPathURL's URLByAppendingPathComponent:("Apple/FontList") isDirectory:(true)
121set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s init()
122ocidAttrDict's setValue:(448) forKey:(refMe's NSFilePosixPermissions)
123set listDone to appFileManager's createDirectoryAtURL:(ocidHTMLSaveDirPathURL) withIntermediateDirectories:(true) attributes:(ocidAttrDict) |error|:(reference)
124#出力ファイル HTML
125set strTime to doGetDateNo("yyyyMMdd_HHmmss") as text
126set strHTMLFileName to ("ATSFontsList." & strTime & ".html") as text
127set ocidSaveHTMLPathURL to ocidHTMLSaveDirPathURL's URLByAppendingPathComponent:(strHTMLFileName) isDirectory:(false)
128#headerに渡すエレメント
129set ocidSetHeaderElement to (refMe's NSXMLElement's elementWithName:("div"))
130set ocidH3Element to refMe's NSXMLElement's elementWithName:("h3")
131(ocidH3Element's setStringValue:("ATS(Apple Type Services)一覧"))
132(ocidSetHeaderElement's addChild:(ocidH3Element))
133###################
134#footerに渡すエレメント
135set ocidSetFooterElement to (refMe's NSXMLElement's elementWithName:("div"))
136set ocidAElement to refMe's NSXMLElement's elementWithName:("a")
137set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("href") stringValue:("https://developer.apple.com/fonts/"))
138(ocidAElement's addAttribute:(ocidAddNode))
139set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("target") stringValue:("_blank"))
140(ocidAElement's addAttribute:(ocidAddNode))
141set strContents to ("Fonts for Apple platforms") as text
142(ocidAElement's setStringValue:(strContents))
143(ocidSetFooterElement's addChild:(ocidAElement))
144###################
145#articleに渡すエレメント
146set ocidSetArticleElement to (refMe's NSXMLElement's elementWithName:("div"))
147set ocidH3Element to (refMe's NSXMLElement's elementWithName:("h3"))
148set strTime to doGetDateNo("yyyyMMdd") as text
149set strSetValue to (strTime & "時点のリスト") as text
150(ocidH3Element's setStringValue:(strSetValue))
151(ocidSetArticleElement's addChild:(ocidH3Element))
152###################
153#テーブル部生成開始
154set ocidTableElement to refMe's NSXMLElement's elementWithName:("table")
155###################
156#【caption】
157set ocidCaptionElement to refMe's NSXMLElement's elementWithName:("caption")
158ocidCaptionElement's setStringValue:("ATS(Apple Type Services)が認識しているフォントリスト")
159ocidTableElement's addChild:(ocidCaptionElement)
160###################
161#【colgroup】
162set ocidColgroupElement to refMe's NSXMLElement's elementWithName:("colgroup")
163###################
164#【col】col生成
165set ocidAddElement to (refMe's NSXMLElement's elementWithName:("col"))
166set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("No"))
167(ocidAddElement's addAttribute:(ocidAddNode))
168(ocidColgroupElement's addChild:(ocidAddElement))
169set ocidAddElement to (refMe's NSXMLElement's elementWithName:("col"))
170set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("ATSNo"))
171(ocidAddElement's addAttribute:(ocidAddNode))
172(ocidColgroupElement's addChild:(ocidAddElement))
173set ocidAddElement to (refMe's NSXMLElement's elementWithName:("col"))
174set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("Postscript"))
175(ocidAddElement's addAttribute:(ocidAddNode))
176(ocidColgroupElement's addChild:(ocidAddElement))
177set ocidAddElement to (refMe's NSXMLElement's elementWithName:("col"))
178set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("Full Name"))
179(ocidAddElement's addAttribute:(ocidAddNode))
180(ocidColgroupElement's addChild:(ocidAddElement))
181set ocidAddElement to (refMe's NSXMLElement's elementWithName:("col"))
182set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("Family"))
183(ocidAddElement's addAttribute:(ocidAddNode))
184(ocidColgroupElement's addChild:(ocidAddElement))
185set ocidAddElement to (refMe's NSXMLElement's elementWithName:("col"))
186set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("SubFamily"))
187(ocidAddElement's addAttribute:(ocidAddNode))
188(ocidColgroupElement's addChild:(ocidAddElement))
189set ocidAddElement to (refMe's NSXMLElement's elementWithName:("col"))
190set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("File Path"))
191(ocidAddElement's addAttribute:(ocidAddNode))
192(ocidColgroupElement's addChild:(ocidAddElement))
193set ocidAddElement to (refMe's NSXMLElement's elementWithName:("col"))
194set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("LINK"))
195(ocidAddElement's addAttribute:(ocidAddNode))
196(ocidColgroupElement's addChild:(ocidAddElement))
197#テーブルエレメントに追加
198ocidTableElement's addChild:(ocidColgroupElement)
199###################
200#【thead】
201set ocidTheadElement to refMe's NSXMLElement's elementWithName:("thead")
202#TR
203set ocidTrElement to refMe's NSXMLElement's elementWithName:("tr")
204#TH
205set ocidAddElement to (refMe's NSXMLElement's elementWithName:("th"))
206set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("No"))
207(ocidAddElement's addAttribute:(ocidAddNode))
208set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("id") stringValue:("No"))
209(ocidAddElement's addAttribute:(ocidAddNode))
210set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("col"))
211(ocidAddElement's addAttribute:(ocidAddNode))
212(ocidAddElement's setStringValue:("\"))
213(ocidTrElement's addChild:(ocidAddElement))
214set ocidAddElement to (refMe's NSXMLElement's elementWithName:("th"))
215set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("ATSNo"))
216(ocidAddElement's addAttribute:(ocidAddNode))
217set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("id") stringValue:("ATSNo"))
218(ocidAddElement's addAttribute:(ocidAddNode))
219set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("col"))
220(ocidAddElement's addAttribute:(ocidAddNode))
221(ocidAddElement's setStringValue:("ATSNo"))
222(ocidTrElement's addChild:(ocidAddElement))
223set ocidAddElement to (refMe's NSXMLElement's elementWithName:("th"))
224set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("Postscript"))
225(ocidAddElement's addAttribute:(ocidAddNode))
226set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("id") stringValue:("Postscript"))
227(ocidAddElement's addAttribute:(ocidAddNode))
228set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("col"))
229(ocidAddElement's addAttribute:(ocidAddNode))
230(ocidAddElement's setStringValue:("Postscript"))
231(ocidTrElement's addChild:(ocidAddElement))
232set ocidAddElement to (refMe's NSXMLElement's elementWithName:("th"))
233set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("Full Name"))
234(ocidAddElement's addAttribute:(ocidAddNode))
235set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("id") stringValue:("Full Name"))
236(ocidAddElement's addAttribute:(ocidAddNode))
237set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("col"))
238(ocidAddElement's addAttribute:(ocidAddNode))
239(ocidAddElement's setStringValue:("Full Name"))
240(ocidTrElement's addChild:(ocidAddElement))
241set ocidAddElement to (refMe's NSXMLElement's elementWithName:("th"))
242set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("Family"))
243(ocidAddElement's addAttribute:(ocidAddNode))
244set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("id") stringValue:("Family"))
245(ocidAddElement's addAttribute:(ocidAddNode))
246set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("col"))
247(ocidAddElement's addAttribute:(ocidAddNode))
248(ocidAddElement's setStringValue:("Family"))
249(ocidTrElement's addChild:(ocidAddElement))
250set ocidAddElement to (refMe's NSXMLElement's elementWithName:("th"))
251set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("SubFamily"))
252(ocidAddElement's addAttribute:(ocidAddNode))
253set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("id") stringValue:("SubFamily"))
254(ocidAddElement's addAttribute:(ocidAddNode))
255set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("col"))
256(ocidAddElement's addAttribute:(ocidAddNode))
257(ocidAddElement's setStringValue:("SubFamily"))
258(ocidTrElement's addChild:(ocidAddElement))
259set ocidAddElement to (refMe's NSXMLElement's elementWithName:("th"))
260set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("File Path"))
261(ocidAddElement's addAttribute:(ocidAddNode))
262set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("id") stringValue:("File Path"))
263(ocidAddElement's addAttribute:(ocidAddNode))
264set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("col"))
265(ocidAddElement's addAttribute:(ocidAddNode))
266(ocidAddElement's setStringValue:("File Path"))
267(ocidTrElement's addChild:(ocidAddElement))
268set ocidAddElement to (refMe's NSXMLElement's elementWithName:("th"))
269set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("LINK"))
270(ocidAddElement's addAttribute:(ocidAddNode))
271set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("id") stringValue:("LINK"))
272(ocidAddElement's addAttribute:(ocidAddNode))
273set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("col"))
274(ocidAddElement's addAttribute:(ocidAddNode))
275(ocidAddElement's setStringValue:("LINK"))
276(ocidTrElement's addChild:(ocidAddElement))
277#TRをTHEADにセット
278ocidTheadElement's addChild:(ocidTrElement)
279#THEADをテーブルにセット
280ocidTableElement's addChild:(ocidTheadElement)
281########################################
282#【tbody】
283set ocidTbodyElement to refMe's NSXMLElement's elementWithName:("tbody")
284#ITEM
285set numCntArray to ocidSortedArray's |count|()
286#データ数繰り返し
287repeat with itemNo from 0 to (numCntArray - 1) by 1
288   #データ取り出し
289   set ocidLineString to (ocidSortedArray's objectAtIndex:(itemNo))
290   set ocidLineItemArray to (ocidLineString's componentsSeparatedByString:(strTab))
291   set strItemNo to (itemNo + 1) as text
292   ##############
293   #TRの開始
294   set ocidTrElement to (refMe's NSXMLElement's elementWithName:("tr"))
295   ####項番処理
296   set ocidThElement to (refMe's NSXMLElement's elementWithName:("th"))
297   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("項目番号:" & strItemNo))
298   (ocidThElement's addAttribute:(ocidAddNode))
299   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("headers") stringValue:("NO"))
300   (ocidThElement's addAttribute:(ocidAddNode))
301   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("row"))
302   (ocidThElement's addAttribute:(ocidAddNode))
303   (ocidThElement's setStringValue:(strItemNo))
304   (ocidTrElement's addChild:(ocidThElement))
305   
306   
307   #ATSNo
308   set ocidTdElement to (refMe's NSXMLElement's elementWithName:("td"))
309   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("ATSNo"))
310   (ocidTdElement's addAttribute:(ocidAddNode))
311   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("style") stringValue:("max-width:120px;"))
312   (ocidTdElement's addAttribute:(ocidAddNode))
313   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("headers") stringValue:("ATSNo"))
314   (ocidTdElement's addAttribute:(ocidAddNode))
315   set strSetValue to (ocidLineItemArray's objectAtIndex:(1))
316   (ocidTdElement's setStringValue:(strSetValue))
317   (ocidTrElement's addChild:(ocidTdElement))
318   #
319   set ocidTdElement to (refMe's NSXMLElement's elementWithName:("td"))
320   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("Postscript"))
321   (ocidTdElement's addAttribute:(ocidAddNode))
322   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("headers") stringValue:("Postscript"))
323   (ocidTdElement's addAttribute:(ocidAddNode))
324   set strSetValue to (ocidLineItemArray's objectAtIndex:(0))
325   (ocidTdElement's setStringValue:(strSetValue))
326   (ocidTrElement's addChild:(ocidTdElement))
327   #
328   set ocidTdElement to (refMe's NSXMLElement's elementWithName:("td"))
329   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("Full Name"))
330   (ocidTdElement's addAttribute:(ocidAddNode))
331   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("headers") stringValue:("Full Name"))
332   (ocidTdElement's addAttribute:(ocidAddNode))
333   set strSetValue to (ocidLineItemArray's objectAtIndex:(2))
334   (ocidTdElement's setStringValue:(strSetValue))
335   (ocidTrElement's addChild:(ocidTdElement))
336   #
337   set ocidTdElement to (refMe's NSXMLElement's elementWithName:("td"))
338   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("Family"))
339   (ocidTdElement's addAttribute:(ocidAddNode))
340   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("headers") stringValue:("Family"))
341   (ocidTdElement's addAttribute:(ocidAddNode))
342   set strSetValue to (ocidLineItemArray's objectAtIndex:(3))
343   (ocidTdElement's setStringValue:(strSetValue))
344   (ocidTrElement's addChild:(ocidTdElement))
345   #
346   set ocidTdElement to (refMe's NSXMLElement's elementWithName:("td"))
347   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("SubFamily"))
348   (ocidTdElement's addAttribute:(ocidAddNode))
349   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("headers") stringValue:("SubFamily"))
350   (ocidTdElement's addAttribute:(ocidAddNode))
351   set strSetValue to (ocidLineItemArray's objectAtIndex:(4))
352   (ocidTdElement's setStringValue:(strSetValue))
353   (ocidTrElement's addChild:(ocidTdElement))
354   #
355   set ocidTdElement to (refMe's NSXMLElement's elementWithName:("td"))
356   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("File Path"))
357   (ocidTdElement's addAttribute:(ocidAddNode))
358   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("headers") stringValue:("File Path"))
359   (ocidTdElement's addAttribute:(ocidAddNode))
360   set strSetValue to (ocidLineItemArray's objectAtIndex:(5))
361   (ocidTdElement's setStringValue:(strSetValue))
362   (ocidTrElement's addChild:(ocidTdElement))
363   
364   #リンクはAdobeのURL
365   set ocidTdElement to (refMe's NSXMLElement's elementWithName:("td"))
366   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("LINK"))
367   (ocidTdElement's addAttribute:(ocidAddNode))
368   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("headers") stringValue:("LINK"))
369   (ocidTdElement's addAttribute:(ocidAddNode))
370   
371   set ocidAElement to (refMe's NSXMLElement's elementWithName:("a"))
372   set strSetValue to (ocidLineItemArray's objectAtIndex:(5))
373   set strURLValue to ("file://" & strSetValue & "")
374   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("href") stringValue:(strURLValue))
375   (ocidAElement's addAttribute:(ocidAddNode))
376   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("target") stringValue:("_blank"))
377   (ocidAElement's addAttribute:(ocidAddNode))
378   set strContents to ("LINK") as text
379   (ocidAElement's setStringValue:(strContents))
380   (ocidTdElement's addChild:(ocidAElement))
381   
382   (ocidTrElement's addChild:(ocidTdElement))
383   #
384   (ocidTbodyElement's addChild:(ocidTrElement))
385end repeat
386#TBODYをテーブルにセット
387ocidTableElement's addChild:(ocidTbodyElement)
388##############################
389#【tfoot】
390set ocidTfootElement to refMe's NSXMLElement's elementWithName:("tfoot")
391#TR
392set ocidTrElement to refMe's NSXMLElement's elementWithName:("tr")
393#colspan指定して1行でセット
394set ocidThElement to (refMe's NSXMLElement's elementWithName:("th"))
395set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("テーブルの終わり"))
396(ocidThElement's addAttribute:(ocidAddNode))
397set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("colspan") stringValue:("8"))
398(ocidThElement's addAttribute:(ocidAddNode))
399set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("row"))
400(ocidThElement's addAttribute:(ocidAddNode))
401#
402set strContents to ("項目数 : " & (numCntArray as text) & "") as text
403(ocidThElement's setStringValue:(strContents))
404#THをTRにセットして
405ocidTrElement's addChild:(ocidThElement)
406#TRをTFOOTにセット
407ocidTfootElement's addChild:(ocidTrElement)
408#TFOOTをテーブルにセット
409ocidTableElement's addChild:(ocidTfootElement)
410#テーブルをアーティクルにセット
411ocidSetArticleElement's addChild:(ocidTableElement)
412##############################
413#HTMLにする
414##############################
415set ocidHTML to doMakeRootElement({ocidSetHeaderElement, ocidSetArticleElement, ocidSetFooterElement})
416#####保存
417#読み取りやすい表示
418set ocidXMLdata to ocidHTML's XMLDataWithOptions:(refMe's NSXMLNodePrettyPrint)
419set listDone to ocidXMLdata's writeToURL:(ocidSaveHTMLPathURL) options:(refMe's NSDataWritingAtomic) |error|:(reference)
420####ブラウザで開く(エラーしなければSafariで開く)
421set strAppPath to ("/Applications/Safari.app") as text
422set ocidAppPathStr to refMe's NSString's stringWithString:(strAppPath)
423set ocidAppPath to ocidAppPathStr's stringByStandardizingPath()
424set ocidAppPathURL to refMe's NSURL's fileURLWithPath:(ocidAppPath) isDirectory:(false)
425try
426   set aliasFilePath to (ocidSaveHTMLPathURL's absoluteURL()) as alias
427   tell application "Safari"
428      open location aliasFilePath
429   end tell
430on error strErrMsg number numErrNo
431   
432   set ocidURLsArray to refMe's NSMutableArray's alloc()'s init()
433   ocidURLsArray's addObject:(ocidSaveHTMLPathURL)
434   #
435   set appWorkspace to refMe's NSWorkspace's sharedWorkspace()
436   set ocidConfig to (refMe's NSWorkspaceOpenConfiguration's configuration())
437   appWorkspace's openURLs:(ocidURLsArray) withApplicationAtURL:(ocidAppPathURL) configuration:(ocidConfig) completionHandler:(missing value)
438   
439end try
440######################
441#開く
442set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace()
443set boolDone to appSharedWorkspace's openURL:(ocidHTMLSaveDirPathURL)
444######################
445#コピーしたDBをゴミ箱に
446set appFileManager to refMe's NSFileManager's defaultManager()
447set listDone to (appFileManager's trashItemAtURL:(ocidSaveDBFilePathURL) resultingItemURL:(ocidSaveDirPathURL) |error|:(reference))
448if (item 2 of listDone) ≠ (missing value) then
449   set strErrorNO to (item 2 of listDone)'s code() as text
450   set strErrorMes to (item 2 of listDone)'s localizedDescription() as text
451   refMe's NSLog("■:" & strErrorNO & strErrorMes)
452   return "エラーしました" & strErrorNO & strErrorMes
453end if
454return true
455######################
456#日付番号
457to doGetDateNo(argFormatStrings)
458   ####日付情報の取得
459   set ocidDate to refMe's NSDate's |date|()
460   ###日付のフォーマットを定義
461   set ocidNSDateFormatter to refMe's NSDateFormatter's alloc()'s init()
462   ocidNSDateFormatter's setLocale:(refMe's NSLocale's localeWithLocaleIdentifier:"ja_JP_POSIX")
463   ocidNSDateFormatter's setDateFormat:(argFormatStrings)
464   set ocidDateAndTime to ocidNSDateFormatter's stringFromDate:(ocidDate)
465   set strDateAndTime to ocidDateAndTime as text
466   return strDateAndTime
467end doGetDateNo
468
469############################################################
470# 基本的なHTMLの構造
471(*
472doMakeRootElement({argHeaderContents, argArticleContents, argFooterContents})
473HTMLのBODY部
474header
475article
476footerにそれぞれAddchildするデータをリストで渡す
477戻り値はRootエレメントにセットされた
478NSXMLDocumentを戻すので 保存すればOK
479*)
480############################################################
481to doMakeRootElement({argHeaderContents, argArticleContents, argFooterContents})
482   #XML初期化
483   set ocidXMLDoc to refMe's NSXMLDocument's alloc()'s init()
484   ocidXMLDoc's setDocumentContentKind:(refMe's NSXMLDocumentHTMLKind)
485   # DTD付与
486   set ocidDTD to refMe's NSXMLDTD's alloc()'s init()
487   ocidDTD's setName:("html")
488   ocidXMLDoc's setDTD:(ocidDTD)
489   #
490   set ocidRootElement to refMe's NSXMLElement's elementWithName:("html")
491   set ocidAddNode to refMe's NSXMLNode's attributeWithName:("lang") stringValue:("ja")
492   ocidRootElement's addAttribute:(ocidAddNode)
493   #
494   set ocidHeadElement to refMe's NSXMLElement's elementWithName:("head")
495   #
496   set ocidAddElement to refMe's NSXMLElement's elementWithName:("title")
497   ocidAddElement's setStringValue:("ATS(Apple Type Services)フォントリスト")
498   ocidHeadElement's addChild:(ocidAddElement)
499   # http-equiv
500   set ocidAddElement to refMe's NSXMLElement's elementWithName:("meta")
501   set ocidAddNode to refMe's NSXMLNode's attributeWithName:("http-equiv") stringValue:("Content-Type")
502   ocidAddElement's addAttribute:(ocidAddNode)
503   set ocidAddNode to refMe's NSXMLNode's attributeWithName:("content") stringValue:("text/html; charset=UTF-8")
504   ocidAddElement's addAttribute:(ocidAddNode)
505   ocidHeadElement's addChild:(ocidAddElement)
506   #
507   set ocidAddElement to refMe's NSXMLElement's elementWithName:("meta")
508   set ocidAddNode to refMe's NSXMLNode's attributeWithName:("name") stringValue:("viewport")
509   ocidAddElement's addAttribute:(ocidAddNode)
510   set ocidAddNode to refMe's NSXMLNode's attributeWithName:("content") stringValue:("width=720")
511   ocidAddElement's addAttribute:(ocidAddNode)
512   ocidHeadElement's addChild:(ocidAddElement)
513   #
514   set ocidAddElement to refMe's NSXMLElement's elementWithName:("style")
515   ocidAddElement's setStringValue:("body { margin: 10px; background-color: #FFFFFF; } table { border-spacing: 0; caption-side: top; font-family: system-ui; } thead th { border: solid 1px #666666; padding: .5ch 1ch; border-block-width: 1px 0; border-inline-width: 1px 0; &:first-of-type { border-start-start-radius: .5em } &:last-of-type { border-start-end-radius: .5em; border-inline-end-width: 1px } } tbody th { word-wrap: break-all;overflow-x: hidden;} tbody td { word-wrap: break-all;overflow-wrap: anywhere;text-overflow: ellipsis;border-spacing: 0; border: solid 1px #666666; padding: .5ch 1ch; border-block-width: 1px 0; border-inline-width: 1px 0; &:last-of-type { border-inline-end-width: 1px } } tbody th { border-spacing: 0; border: solid 1px #666666; padding: .5ch 1ch; border-block-width: 1px 0; border-inline-width: 1px 0; } tbody tr:nth-of-type(odd) { background: #F2F2F2; } .kind_string { font-size: 0.75em; } .date_string { font-size: 0.5em; } tfoot th { border: solid 1px #666666; padding: .5ch 1ch; &:first-of-type { border-end-start-radius: .5em } &:last-of-type { border-end-end-radius: .5em; border-inline-end-width: 1px } }")
516   ocidHeadElement's addChild:(ocidAddElement)
517   ocidRootElement's addChild:(ocidHeadElement)
518   #
519   #ボディエレメント
520   set ocidBodyElement to refMe's NSXMLElement's elementWithName:("body")
521   #ヘッダー
522   set ocidHeaderElement to refMe's NSXMLElement's elementWithName:("header")
523   set ocidAddNode to refMe's NSXMLNode's attributeWithName:("id") stringValue:("header")
524   ocidHeaderElement's addAttribute:(ocidAddNode)
525   set ocidAddNode to refMe's NSXMLNode's attributeWithName:("class") stringValue:("body_header")
526   ocidHeaderElement's addAttribute:(ocidAddNode)
527   ocidHeaderElement's addChild:(argHeaderContents)
528   ocidBodyElement's addChild:(ocidHeaderElement)
529   #アーティクル
530   set ocidArticleElement to refMe's NSXMLElement's elementWithName:("article")
531   set ocidAddNode to refMe's NSXMLNode's attributeWithName:("id") stringValue:("article")
532   ocidArticleElement's addAttribute:(ocidAddNode)
533   set ocidAddNode to refMe's NSXMLNode's attributeWithName:("class") stringValue:("body_article")
534   ocidArticleElement's addAttribute:(ocidAddNode)
535   ocidArticleElement's addChild:(argArticleContents)
536   ocidBodyElement's addChild:(ocidArticleElement)
537   #フッター
538   set ocidFooterElement to refMe's NSXMLElement's elementWithName:("footer")
539   set ocidAddNode to refMe's NSXMLNode's attributeWithName:("id") stringValue:("footer")
540   ocidFooterElement's addAttribute:(ocidAddNode)
541   set ocidAddNode to refMe's NSXMLNode's attributeWithName:("class") stringValue:("body_footer")
542   ocidFooterElement's addAttribute:(ocidAddNode)
543   ocidFooterElement's addChild:(argFooterContents)
544   ocidBodyElement's addChild:(ocidFooterElement)
545   #ボディをROOTエレメントにセット
546   ocidRootElement's addChild:(ocidBodyElement)
547   #ROOTをXMLにセット
548   ocidXMLDoc's setRootElement:(ocidRootElement)
549   #値を戻す
550   return ocidXMLDoc
551end doMakeRootElement
AppleScriptで生成しました