20260326

【システムドメイン】ATS (Apple Font Registration System)の内容のHTML出力 


【システムドメイン】ATS (Apple Font Registration System)の内容のHTML出力 

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

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

ATS_FONT_LIST_HTML_System.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   set boonUset to (itemLineString's containsString:("/System/Library"))
104   if boonUset is true then
105      set ocidItemLineArray to (itemLineString's componentsSeparatedByString:(strTab))
106      ##ここで順番入れ替え
107      (ocidItemLineArray's exchangeObjectAtIndex:(0) withObjectAtIndex:(1))
108      set ocidJoinText to (ocidItemLineArray's componentsJoinedByString:(strTab))
109      (ocidSortedArray's addObject:(ocidJoinText))
110   end if
111   set ocidItemLineArray to (missing value)
112   set itemLineString to (missing value)
113end repeat
114set ocidReadArray to (missing value)
115#ソート
116set ocidSortedArray to ocidSortedArray's sortedArrayUsingSelector:("localizedStandardCompare:")
117
118######################
119#本処理 HTML生成
120set ocidHomeDirURL to appFileManager's homeDirectoryForCurrentUser()
121set ocidSitesDirPathURL to ocidHomeDirURL's URLByAppendingPathComponent:("Sites") isDirectory:(true)
122set ocidHTMLSaveDirPathURL to ocidSitesDirPathURL's URLByAppendingPathComponent:("Apple/FontList") isDirectory:(true)
123set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s init()
124ocidAttrDict's setValue:(448) forKey:(refMe's NSFilePosixPermissions)
125set listDone to appFileManager's createDirectoryAtURL:(ocidHTMLSaveDirPathURL) withIntermediateDirectories:(true) attributes:(ocidAttrDict) |error|:(reference)
126#出力ファイル HTML
127set strTime to doGetDateNo("yyyyMMdd_HHmmss") as text
128set strHTMLFileName to ("ATSFontsList." & strTime & ".html") as text
129set ocidSaveHTMLPathURL to ocidHTMLSaveDirPathURL's URLByAppendingPathComponent:(strHTMLFileName) isDirectory:(false)
130#headerに渡すエレメント
131set ocidSetHeaderElement to (refMe's NSXMLElement's elementWithName:("div"))
132set ocidH3Element to refMe's NSXMLElement's elementWithName:("h3")
133(ocidH3Element's setStringValue:("ATS(Apple Type Services)一覧"))
134(ocidSetHeaderElement's addChild:(ocidH3Element))
135###################
136#footerに渡すエレメント
137set ocidSetFooterElement to (refMe's NSXMLElement's elementWithName:("div"))
138set ocidAElement to refMe's NSXMLElement's elementWithName:("a")
139set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("href") stringValue:("https://developer.apple.com/fonts/"))
140(ocidAElement's addAttribute:(ocidAddNode))
141set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("target") stringValue:("_blank"))
142(ocidAElement's addAttribute:(ocidAddNode))
143set strContents to ("Fonts for Apple platforms") as text
144(ocidAElement's setStringValue:(strContents))
145(ocidSetFooterElement's addChild:(ocidAElement))
146###################
147#articleに渡すエレメント
148set ocidSetArticleElement to (refMe's NSXMLElement's elementWithName:("div"))
149set ocidH3Element to (refMe's NSXMLElement's elementWithName:("h3"))
150set strTime to doGetDateNo("yyyyMMdd") as text
151set strSetValue to (strTime & "時点のリスト") as text
152(ocidH3Element's setStringValue:(strSetValue))
153(ocidSetArticleElement's addChild:(ocidH3Element))
154###################
155#テーブル部生成開始
156set ocidTableElement to refMe's NSXMLElement's elementWithName:("table")
157###################
158#【caption】
159set ocidCaptionElement to refMe's NSXMLElement's elementWithName:("caption")
160ocidCaptionElement's setStringValue:("ATS(Apple Type Services)が認識しているフォントリスト")
161ocidTableElement's addChild:(ocidCaptionElement)
162###################
163#【colgroup】
164set ocidColgroupElement to refMe's NSXMLElement's elementWithName:("colgroup")
165###################
166#【col】col生成
167set ocidAddElement to (refMe's NSXMLElement's elementWithName:("col"))
168set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("No"))
169(ocidAddElement's addAttribute:(ocidAddNode))
170(ocidColgroupElement's addChild:(ocidAddElement))
171set ocidAddElement to (refMe's NSXMLElement's elementWithName:("col"))
172set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("ATSNo"))
173(ocidAddElement's addAttribute:(ocidAddNode))
174(ocidColgroupElement's addChild:(ocidAddElement))
175set ocidAddElement to (refMe's NSXMLElement's elementWithName:("col"))
176set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("Postscript"))
177(ocidAddElement's addAttribute:(ocidAddNode))
178(ocidColgroupElement's addChild:(ocidAddElement))
179set ocidAddElement to (refMe's NSXMLElement's elementWithName:("col"))
180set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("Full Name"))
181(ocidAddElement's addAttribute:(ocidAddNode))
182(ocidColgroupElement's addChild:(ocidAddElement))
183set ocidAddElement to (refMe's NSXMLElement's elementWithName:("col"))
184set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("Family"))
185(ocidAddElement's addAttribute:(ocidAddNode))
186(ocidColgroupElement's addChild:(ocidAddElement))
187set ocidAddElement to (refMe's NSXMLElement's elementWithName:("col"))
188set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("SubFamily"))
189(ocidAddElement's addAttribute:(ocidAddNode))
190(ocidColgroupElement's addChild:(ocidAddElement))
191set ocidAddElement to (refMe's NSXMLElement's elementWithName:("col"))
192set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("File Path"))
193(ocidAddElement's addAttribute:(ocidAddNode))
194(ocidColgroupElement's addChild:(ocidAddElement))
195set ocidAddElement to (refMe's NSXMLElement's elementWithName:("col"))
196set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("LINK"))
197(ocidAddElement's addAttribute:(ocidAddNode))
198(ocidColgroupElement's addChild:(ocidAddElement))
199#テーブルエレメントに追加
200ocidTableElement's addChild:(ocidColgroupElement)
201###################
202#【thead】
203set ocidTheadElement to refMe's NSXMLElement's elementWithName:("thead")
204#TR
205set ocidTrElement to refMe's NSXMLElement's elementWithName:("tr")
206#TH
207set ocidAddElement to (refMe's NSXMLElement's elementWithName:("th"))
208set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("No"))
209(ocidAddElement's addAttribute:(ocidAddNode))
210set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("id") stringValue:("No"))
211(ocidAddElement's addAttribute:(ocidAddNode))
212set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("col"))
213(ocidAddElement's addAttribute:(ocidAddNode))
214(ocidAddElement's setStringValue:("\"))
215(ocidTrElement's addChild:(ocidAddElement))
216set ocidAddElement to (refMe's NSXMLElement's elementWithName:("th"))
217set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("ATSNo"))
218(ocidAddElement's addAttribute:(ocidAddNode))
219set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("id") stringValue:("ATSNo"))
220(ocidAddElement's addAttribute:(ocidAddNode))
221set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("col"))
222(ocidAddElement's addAttribute:(ocidAddNode))
223(ocidAddElement's setStringValue:("ATSNo"))
224(ocidTrElement's addChild:(ocidAddElement))
225set ocidAddElement to (refMe's NSXMLElement's elementWithName:("th"))
226set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("Postscript"))
227(ocidAddElement's addAttribute:(ocidAddNode))
228set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("id") stringValue:("Postscript"))
229(ocidAddElement's addAttribute:(ocidAddNode))
230set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("col"))
231(ocidAddElement's addAttribute:(ocidAddNode))
232(ocidAddElement's setStringValue:("Postscript"))
233(ocidTrElement's addChild:(ocidAddElement))
234set ocidAddElement to (refMe's NSXMLElement's elementWithName:("th"))
235set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("Full Name"))
236(ocidAddElement's addAttribute:(ocidAddNode))
237set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("id") stringValue:("Full Name"))
238(ocidAddElement's addAttribute:(ocidAddNode))
239set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("col"))
240(ocidAddElement's addAttribute:(ocidAddNode))
241(ocidAddElement's setStringValue:("Full Name"))
242(ocidTrElement's addChild:(ocidAddElement))
243set ocidAddElement to (refMe's NSXMLElement's elementWithName:("th"))
244set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("Family"))
245(ocidAddElement's addAttribute:(ocidAddNode))
246set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("id") stringValue:("Family"))
247(ocidAddElement's addAttribute:(ocidAddNode))
248set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("col"))
249(ocidAddElement's addAttribute:(ocidAddNode))
250(ocidAddElement's setStringValue:("Family"))
251(ocidTrElement's addChild:(ocidAddElement))
252set ocidAddElement to (refMe's NSXMLElement's elementWithName:("th"))
253set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("SubFamily"))
254(ocidAddElement's addAttribute:(ocidAddNode))
255set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("id") stringValue:("SubFamily"))
256(ocidAddElement's addAttribute:(ocidAddNode))
257set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("col"))
258(ocidAddElement's addAttribute:(ocidAddNode))
259(ocidAddElement's setStringValue:("SubFamily"))
260(ocidTrElement's addChild:(ocidAddElement))
261set ocidAddElement to (refMe's NSXMLElement's elementWithName:("th"))
262set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("File Path"))
263(ocidAddElement's addAttribute:(ocidAddNode))
264set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("id") stringValue:("File Path"))
265(ocidAddElement's addAttribute:(ocidAddNode))
266set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("col"))
267(ocidAddElement's addAttribute:(ocidAddNode))
268(ocidAddElement's setStringValue:("File Path"))
269(ocidTrElement's addChild:(ocidAddElement))
270set ocidAddElement to (refMe's NSXMLElement's elementWithName:("th"))
271set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("LINK"))
272(ocidAddElement's addAttribute:(ocidAddNode))
273set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("id") stringValue:("LINK"))
274(ocidAddElement's addAttribute:(ocidAddNode))
275set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("col"))
276(ocidAddElement's addAttribute:(ocidAddNode))
277(ocidAddElement's setStringValue:("LINK"))
278(ocidTrElement's addChild:(ocidAddElement))
279#TRをTHEADにセット
280ocidTheadElement's addChild:(ocidTrElement)
281#THEADをテーブルにセット
282ocidTableElement's addChild:(ocidTheadElement)
283########################################
284#【tbody】
285set ocidTbodyElement to refMe's NSXMLElement's elementWithName:("tbody")
286#ITEM
287set numCntArray to ocidSortedArray's |count|()
288#データ数繰り返し
289repeat with itemNo from 0 to (numCntArray - 1) by 1
290   #データ取り出し
291   set ocidLineString to (ocidSortedArray's objectAtIndex:(itemNo))
292   set ocidLineItemArray to (ocidLineString's componentsSeparatedByString:(strTab))
293   set strItemNo to (itemNo + 1) as text
294   ##############
295   #TRの開始
296   set ocidTrElement to (refMe's NSXMLElement's elementWithName:("tr"))
297   ####項番処理
298   set ocidThElement to (refMe's NSXMLElement's elementWithName:("th"))
299   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("項目番号:" & strItemNo))
300   (ocidThElement's addAttribute:(ocidAddNode))
301   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("headers") stringValue:("NO"))
302   (ocidThElement's addAttribute:(ocidAddNode))
303   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("row"))
304   (ocidThElement's addAttribute:(ocidAddNode))
305   (ocidThElement's setStringValue:(strItemNo))
306   (ocidTrElement's addChild:(ocidThElement))
307   
308   
309   #ATSNo
310   set ocidTdElement to (refMe's NSXMLElement's elementWithName:("td"))
311   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("ATSNo"))
312   (ocidTdElement's addAttribute:(ocidAddNode))
313   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("style") stringValue:("max-width:120px;"))
314   (ocidTdElement's addAttribute:(ocidAddNode))
315   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("headers") stringValue:("ATSNo"))
316   (ocidTdElement's addAttribute:(ocidAddNode))
317   set strSetValue to (ocidLineItemArray's objectAtIndex:(1))
318   (ocidTdElement's setStringValue:(strSetValue))
319   (ocidTrElement's addChild:(ocidTdElement))
320   #
321   set ocidTdElement to (refMe's NSXMLElement's elementWithName:("td"))
322   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("Postscript"))
323   (ocidTdElement's addAttribute:(ocidAddNode))
324   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("headers") stringValue:("Postscript"))
325   (ocidTdElement's addAttribute:(ocidAddNode))
326   set strSetValue to (ocidLineItemArray's objectAtIndex:(0))
327   (ocidTdElement's setStringValue:(strSetValue))
328   (ocidTrElement's addChild:(ocidTdElement))
329   #
330   set ocidTdElement to (refMe's NSXMLElement's elementWithName:("td"))
331   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("Full Name"))
332   (ocidTdElement's addAttribute:(ocidAddNode))
333   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("headers") stringValue:("Full Name"))
334   (ocidTdElement's addAttribute:(ocidAddNode))
335   set strSetValue to (ocidLineItemArray's objectAtIndex:(2))
336   (ocidTdElement's setStringValue:(strSetValue))
337   (ocidTrElement's addChild:(ocidTdElement))
338   #
339   set ocidTdElement to (refMe's NSXMLElement's elementWithName:("td"))
340   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("Family"))
341   (ocidTdElement's addAttribute:(ocidAddNode))
342   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("headers") stringValue:("Family"))
343   (ocidTdElement's addAttribute:(ocidAddNode))
344   set strSetValue to (ocidLineItemArray's objectAtIndex:(3))
345   (ocidTdElement's setStringValue:(strSetValue))
346   (ocidTrElement's addChild:(ocidTdElement))
347   #
348   set ocidTdElement to (refMe's NSXMLElement's elementWithName:("td"))
349   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("SubFamily"))
350   (ocidTdElement's addAttribute:(ocidAddNode))
351   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("headers") stringValue:("SubFamily"))
352   (ocidTdElement's addAttribute:(ocidAddNode))
353   set strSetValue to (ocidLineItemArray's objectAtIndex:(4))
354   (ocidTdElement's setStringValue:(strSetValue))
355   (ocidTrElement's addChild:(ocidTdElement))
356   #
357   set ocidTdElement to (refMe's NSXMLElement's elementWithName:("td"))
358   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("File Path"))
359   (ocidTdElement's addAttribute:(ocidAddNode))
360   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("headers") stringValue:("File Path"))
361   (ocidTdElement's addAttribute:(ocidAddNode))
362   set strSetValue to (ocidLineItemArray's objectAtIndex:(5))
363   (ocidTdElement's setStringValue:(strSetValue))
364   (ocidTrElement's addChild:(ocidTdElement))
365   
366   #リンクはAdobeのURL
367   set ocidTdElement to (refMe's NSXMLElement's elementWithName:("td"))
368   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("LINK"))
369   (ocidTdElement's addAttribute:(ocidAddNode))
370   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("headers") stringValue:("LINK"))
371   (ocidTdElement's addAttribute:(ocidAddNode))
372   
373   set ocidAElement to (refMe's NSXMLElement's elementWithName:("a"))
374   set strSetValue to (ocidLineItemArray's objectAtIndex:(5))
375   set strURLValue to ("file://" & strSetValue & "")
376   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("href") stringValue:(strURLValue))
377   (ocidAElement's addAttribute:(ocidAddNode))
378   set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("target") stringValue:("_blank"))
379   (ocidAElement's addAttribute:(ocidAddNode))
380   set strContents to ("LINK") as text
381   (ocidAElement's setStringValue:(strContents))
382   (ocidTdElement's addChild:(ocidAElement))
383   
384   (ocidTrElement's addChild:(ocidTdElement))
385   #
386   (ocidTbodyElement's addChild:(ocidTrElement))
387end repeat
388#TBODYをテーブルにセット
389ocidTableElement's addChild:(ocidTbodyElement)
390##############################
391#【tfoot】
392set ocidTfootElement to refMe's NSXMLElement's elementWithName:("tfoot")
393#TR
394set ocidTrElement to refMe's NSXMLElement's elementWithName:("tr")
395#colspan指定して1行でセット
396set ocidThElement to (refMe's NSXMLElement's elementWithName:("th"))
397set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("テーブルの終わり"))
398(ocidThElement's addAttribute:(ocidAddNode))
399set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("colspan") stringValue:("8"))
400(ocidThElement's addAttribute:(ocidAddNode))
401set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("row"))
402(ocidThElement's addAttribute:(ocidAddNode))
403#
404set strContents to ("項目数 : " & (numCntArray as text) & "") as text
405(ocidThElement's setStringValue:(strContents))
406#THをTRにセットして
407ocidTrElement's addChild:(ocidThElement)
408#TRをTFOOTにセット
409ocidTfootElement's addChild:(ocidTrElement)
410#TFOOTをテーブルにセット
411ocidTableElement's addChild:(ocidTfootElement)
412#テーブルをアーティクルにセット
413ocidSetArticleElement's addChild:(ocidTableElement)
414##############################
415#HTMLにする
416##############################
417set ocidHTML to doMakeRootElement({ocidSetHeaderElement, ocidSetArticleElement, ocidSetFooterElement})
418#####保存
419#読み取りやすい表示
420set ocidXMLdata to ocidHTML's XMLDataWithOptions:(refMe's NSXMLNodePrettyPrint)
421set listDone to ocidXMLdata's writeToURL:(ocidSaveHTMLPathURL) options:(refMe's NSDataWritingAtomic) |error|:(reference)
422####ブラウザで開く(エラーしなければSafariで開く)
423set strAppPath to ("/Applications/Safari.app") as text
424set ocidAppPathStr to refMe's NSString's stringWithString:(strAppPath)
425set ocidAppPath to ocidAppPathStr's stringByStandardizingPath()
426set ocidAppPathURL to refMe's NSURL's fileURLWithPath:(ocidAppPath) isDirectory:(false)
427try
428   set aliasFilePath to (ocidSaveHTMLPathURL's absoluteURL()) as alias
429   tell application "Safari"
430      open location aliasFilePath
431   end tell
432on error strErrMsg number numErrNo
433   
434   set ocidURLsArray to refMe's NSMutableArray's alloc()'s init()
435   ocidURLsArray's addObject:(ocidSaveHTMLPathURL)
436   #
437   set appWorkspace to refMe's NSWorkspace's sharedWorkspace()
438   set ocidConfig to (refMe's NSWorkspaceOpenConfiguration's configuration())
439   appWorkspace's openURLs:(ocidURLsArray) withApplicationAtURL:(ocidAppPathURL) configuration:(ocidConfig) completionHandler:(missing value)
440   
441end try
442######################
443#開く
444set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace()
445set boolDone to appSharedWorkspace's openURL:(ocidHTMLSaveDirPathURL)
446######################
447#コピーしたDBをゴミ箱に
448set appFileManager to refMe's NSFileManager's defaultManager()
449set listDone to (appFileManager's trashItemAtURL:(ocidSaveDBFilePathURL) resultingItemURL:(ocidSaveDirPathURL) |error|:(reference))
450if (item 2 of listDone) ≠ (missing value) then
451   set strErrorNO to (item 2 of listDone)'s code() as text
452   set strErrorMes to (item 2 of listDone)'s localizedDescription() as text
453   refMe's NSLog("■:" & strErrorNO & strErrorMes)
454   return "エラーしました" & strErrorNO & strErrorMes
455end if
456return true
457######################
458#日付番号
459to doGetDateNo(argFormatStrings)
460   ####日付情報の取得
461   set ocidDate to refMe's NSDate's |date|()
462   ###日付のフォーマットを定義
463   set ocidNSDateFormatter to refMe's NSDateFormatter's alloc()'s init()
464   ocidNSDateFormatter's setLocale:(refMe's NSLocale's localeWithLocaleIdentifier:"ja_JP_POSIX")
465   ocidNSDateFormatter's setDateFormat:(argFormatStrings)
466   set ocidDateAndTime to ocidNSDateFormatter's stringFromDate:(ocidDate)
467   set strDateAndTime to ocidDateAndTime as text
468   return strDateAndTime
469end doGetDateNo
470
471############################################################
472# 基本的なHTMLの構造
473(*
474doMakeRootElement({argHeaderContents, argArticleContents, argFooterContents})
475HTMLのBODY部
476header
477article
478footerにそれぞれAddchildするデータをリストで渡す
479戻り値はRootエレメントにセットされた
480NSXMLDocumentを戻すので 保存すればOK
481*)
482############################################################
483to doMakeRootElement({argHeaderContents, argArticleContents, argFooterContents})
484   #XML初期化
485   set ocidXMLDoc to refMe's NSXMLDocument's alloc()'s init()
486   ocidXMLDoc's setDocumentContentKind:(refMe's NSXMLDocumentHTMLKind)
487   # DTD付与
488   set ocidDTD to refMe's NSXMLDTD's alloc()'s init()
489   ocidDTD's setName:("html")
490   ocidXMLDoc's setDTD:(ocidDTD)
491   #
492   set ocidRootElement to refMe's NSXMLElement's elementWithName:("html")
493   set ocidAddNode to refMe's NSXMLNode's attributeWithName:("lang") stringValue:("ja")
494   ocidRootElement's addAttribute:(ocidAddNode)
495   #
496   set ocidHeadElement to refMe's NSXMLElement's elementWithName:("head")
497   #
498   set ocidAddElement to refMe's NSXMLElement's elementWithName:("title")
499   ocidAddElement's setStringValue:("ATS(Apple Type Services)フォントリスト")
500   ocidHeadElement's addChild:(ocidAddElement)
501   # http-equiv
502   set ocidAddElement to refMe's NSXMLElement's elementWithName:("meta")
503   set ocidAddNode to refMe's NSXMLNode's attributeWithName:("http-equiv") stringValue:("Content-Type")
504   ocidAddElement's addAttribute:(ocidAddNode)
505   set ocidAddNode to refMe's NSXMLNode's attributeWithName:("content") stringValue:("text/html; charset=UTF-8")
506   ocidAddElement's addAttribute:(ocidAddNode)
507   ocidHeadElement's addChild:(ocidAddElement)
508   #
509   set ocidAddElement to refMe's NSXMLElement's elementWithName:("meta")
510   set ocidAddNode to refMe's NSXMLNode's attributeWithName:("name") stringValue:("viewport")
511   ocidAddElement's addAttribute:(ocidAddNode)
512   set ocidAddNode to refMe's NSXMLNode's attributeWithName:("content") stringValue:("width=720")
513   ocidAddElement's addAttribute:(ocidAddNode)
514   ocidHeadElement's addChild:(ocidAddElement)
515   #
516   set ocidAddElement to refMe's NSXMLElement's elementWithName:("style")
517   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 } }")
518   ocidHeadElement's addChild:(ocidAddElement)
519   ocidRootElement's addChild:(ocidHeadElement)
520   #
521   #ボディエレメント
522   set ocidBodyElement to refMe's NSXMLElement's elementWithName:("body")
523   #ヘッダー
524   set ocidHeaderElement to refMe's NSXMLElement's elementWithName:("header")
525   set ocidAddNode to refMe's NSXMLNode's attributeWithName:("id") stringValue:("header")
526   ocidHeaderElement's addAttribute:(ocidAddNode)
527   set ocidAddNode to refMe's NSXMLNode's attributeWithName:("class") stringValue:("body_header")
528   ocidHeaderElement's addAttribute:(ocidAddNode)
529   ocidHeaderElement's addChild:(argHeaderContents)
530   ocidBodyElement's addChild:(ocidHeaderElement)
531   #アーティクル
532   set ocidArticleElement to refMe's NSXMLElement's elementWithName:("article")
533   set ocidAddNode to refMe's NSXMLNode's attributeWithName:("id") stringValue:("article")
534   ocidArticleElement's addAttribute:(ocidAddNode)
535   set ocidAddNode to refMe's NSXMLNode's attributeWithName:("class") stringValue:("body_article")
536   ocidArticleElement's addAttribute:(ocidAddNode)
537   ocidArticleElement's addChild:(argArticleContents)
538   ocidBodyElement's addChild:(ocidArticleElement)
539   #フッター
540   set ocidFooterElement to refMe's NSXMLElement's elementWithName:("footer")
541   set ocidAddNode to refMe's NSXMLNode's attributeWithName:("id") stringValue:("footer")
542   ocidFooterElement's addAttribute:(ocidAddNode)
543   set ocidAddNode to refMe's NSXMLNode's attributeWithName:("class") stringValue:("body_footer")
544   ocidFooterElement's addAttribute:(ocidAddNode)
545   ocidFooterElement's addChild:(argFooterContents)
546   ocidBodyElement's addChild:(ocidFooterElement)
547   #ボディをROOTエレメントにセット
548   ocidRootElement's addChild:(ocidBodyElement)
549   #ROOTをXMLにセット
550   ocidXMLDoc's setRootElement:(ocidRootElement)
551   #値を戻す
552   return ocidXMLDoc
553end doMakeRootElement
AppleScriptで生成しました