
【AppleScript】インテル・アプリ一覧をHTML出力
【Safari・FireFox用Script Editorで開く】 |
| ソース | |
|---|---|
| 001 | #!/usr/bin/env osascript |
| 002 | #coding: utf-8 |
| 003 | ----+----1----+----2----+----3----+----4----+----5----+----6----+----7-- |
| 004 | (* |
| 005 | インテルアプリケーションの一覧をHTML出力します |
| 006 | |
| 007 | |
| 008 | |
| 009 | |
| 010 | com.cocolog-nifty.quicktimer.icefloe *) |
| 011 | ----+----1----+----2----+----3----+----4----+----5----+----6----+----7-- |
| 012 | use AppleScript version "2.8" |
| 013 | use framework "Foundation" |
| 014 | use framework "AppKit" |
| 015 | use framework "UniformTypeIdentifiers" |
| 016 | use framework "CoreFoundation" |
| 017 | use scripting additions |
| 018 | |
| 019 | property refMe : a reference to current application |
| 020 | |
| 021 | #処理開始時間 |
| 022 | set ocidStart to refMe's CFAbsoluteTimeGetCurrent() |
| 023 | |
| 024 | |
| 025 | ############################# |
| 026 | #保存先 |
| 027 | set appFileManager to refMe's NSFileManager's defaultManager() |
| 028 | set ocidTempDirURL to appFileManager's temporaryDirectory() |
| 029 | set ocidUUID to refMe's NSUUID's alloc()'s init() |
| 030 | set ocidUUIDString to ocidUUID's UUIDString |
| 031 | set ocidSaveDirPathURL to ocidTempDirURL's URLByAppendingPathComponent:(ocidUUIDString) isDirectory:(true) |
| 032 | # |
| 033 | set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s init() |
| 034 | ocidAttrDict's setValue:(511) forKey:(refMe's NSFilePosixPermissions) |
| 035 | set listDone to appFileManager's createDirectoryAtURL:(ocidSaveDirPathURL) withIntermediateDirectories:(true) attributes:(ocidAttrDict) |error|:(reference) |
| 036 | #パス |
| 037 | set strFileName to "search_result.html" as text |
| 038 | set ocidSaveFilePathURL to ocidSaveDirPathURL's URLByAppendingPathComponent:(strFileName) isDirectory:false |
| 039 | |
| 040 | |
| 041 | ############################# |
| 042 | #コマンドJSON |
| 043 | set strCmd to ("/usr/sbin/system_profiler SPApplicationsDataType -xml > \"~/Desktop/SPApplicationsDataType.plist\"") as text |
| 044 | set strCmd to ("/usr/sbin/system_profiler SPApplicationsDataType -json") as text |
| 045 | set strStdOut to (do shell script strCmd) as text |
| 046 | |
| 047 | set ocidStdOutString to refMe's NSMutableString's stringWithString:(strStdOut) |
| 048 | set ocidReplacedStrings to (ocidStdOutString's stringByReplacingOccurrencesOfString:(return & linefeed) withString:(linefeed)) |
| 049 | set ocidReplacedStrings to (ocidReplacedStrings's stringByReplacingOccurrencesOfString:(return) withString:(linefeed)) |
| 050 | set ocidReplacedStrings to (ocidReplacedStrings's stringByReplacingOccurrencesOfString:(linefeed & linefeed) withString:(linefeed)) |
| 051 | set ocidReplacedStrings to (ocidReplacedStrings's stringByReplacingOccurrencesOfString:(tab) withString:("")) |
| 052 | #NSDATA |
| 053 | set ocidJsonData to ocidReplacedStrings's dataUsingEncoding:(refMe's NSUTF8StringEncoding) |
| 054 | #JSON ルートがDICT |
| 055 | set ocidOption to (refMe's NSJSONReadingJSON5Allowed) |
| 056 | set listResponse to (refMe's NSJSONSerialization's JSONObjectWithData:(ocidJsonData) options:(ocidOption) |error|:(reference)) |
| 057 | if (item 2 of listResponse) = (missing value) then |
| 058 | log "JSONObjectWithData 正常処理" |
| 059 | set ocidApplicationsArray to (first item of listResponse)'s objectForKey:("SPApplicationsDataType") |
| 060 | else if (item 2 of listResponse) ≠ (missing value) then |
| 061 | set strErrorNO to (item 2 of listResponse)'s code() as text |
| 062 | set strErrorMes to (item 2 of listResponse)'s localizedDescription() as text |
| 063 | refMe's NSLog("■:" & strErrorNO & strErrorMes) |
| 064 | return "JSONObjectWithData エラーしました" & strErrorNO & strErrorMes |
| 065 | end if |
| 066 | set appPredicate to refMe's NSPredicate's predicateWithFormat_("arch_kind == %@", "arch_i64") |
| 067 | set ocidFilterdArray to ocidApplicationsArray's filteredArrayUsingPredicate:(appPredicate) |
| 068 | ############################# |
| 069 | # |
| 070 | set strTitleText to ("【system_profiler】: インテルアプリ一覧") as text |
| 071 | #headerに渡すエレメント |
| 072 | set ocidSetHeaderElement to (refMe's NSXMLElement's elementWithName:("div")) |
| 073 | set ocidH3Element to (refMe's NSXMLElement's elementWithName:("h3")) |
| 074 | (ocidH3Element's setStringValue:(strTitleText)) |
| 075 | (ocidSetHeaderElement's addChild:(ocidH3Element)) |
| 076 | #footerに渡すエレメント |
| 077 | set ocidSetFooterElement to (refMe's NSXMLElement's elementWithName:("div")) |
| 078 | set ocidAElement to (refMe's NSXMLElement's elementWithName:("a")) |
| 079 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("href") stringValue:("https://note.com/search?context=note&q=from%3A%40quicktimer%20&sort=new")) |
| 080 | (ocidAElement's addAttribute:(ocidAddNode)) |
| 081 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("target") stringValue:("_blank")) |
| 082 | (ocidAElement's addAttribute:(ocidAddNode)) |
| 083 | set strContents to ("AppleScriptで生成しました") as text |
| 084 | (ocidAElement's setStringValue:(strContents)) |
| 085 | (ocidSetFooterElement's addChild:(ocidAElement)) |
| 086 | #articleに渡すエレメント |
| 087 | set ocidSetArticleElement to (refMe's NSXMLElement's elementWithName:("div")) |
| 088 | set ocidH5Element to (refMe's NSXMLElement's elementWithName:("h5")) |
| 089 | (ocidH5Element's setStringValue:("インテルアプリ一覧:2027秋リリースのmacOS28で起動出来なくなります")) |
| 090 | (ocidSetArticleElement's addChild:(ocidH5Element)) |
| 091 | ######################## |
| 092 | #テーブル部生成開始 |
| 093 | set ocidTableElement to (refMe's NSXMLElement's elementWithName:("table")) |
| 094 | #【caption】 |
| 095 | set ocidCaptionElement to (refMe's NSXMLElement's elementWithName:("caption")) |
| 096 | set strCaptionText to ("インテル・バイナリーのアプリケーション一覧") as text |
| 097 | (ocidCaptionElement's setStringValue:(strCaptionText)) |
| 098 | (ocidTableElement's addChild:(ocidCaptionElement)) |
| 099 | #【thead】 |
| 100 | set ocidTheadElement to (refMe's NSXMLElement's elementWithName:("thead")) |
| 101 | set ocidTrElement to (refMe's NSXMLElement's elementWithName:("tr")) |
| 102 | #項目番号 |
| 103 | set ocidAddElement to (refMe's NSXMLElement's elementWithName:("th")) |
| 104 | (ocidAddElement's setStringValue:("\")) |
| 105 | (ocidTrElement's addChild:(ocidAddElement)) |
| 106 | #キー |
| 107 | set ocidAddElement to (refMe's NSXMLElement's elementWithName:("th")) |
| 108 | (ocidAddElement's setStringValue:("NAME")) |
| 109 | (ocidTrElement's addChild:(ocidAddElement)) |
| 110 | #キー |
| 111 | set ocidAddElement to (refMe's NSXMLElement's elementWithName:("th")) |
| 112 | (ocidAddElement's setStringValue:("LINK")) |
| 113 | (ocidTrElement's addChild:(ocidAddElement)) |
| 114 | #キー |
| 115 | set ocidAddElement to (refMe's NSXMLElement's elementWithName:("th")) |
| 116 | (ocidAddElement's setStringValue:("PATH")) |
| 117 | (ocidTrElement's addChild:(ocidAddElement)) |
| 118 | #TRをTHEADにセット |
| 119 | (ocidTheadElement's addChild:(ocidTrElement)) |
| 120 | #THEADをテーブルにセット |
| 121 | (ocidTableElement's addChild:(ocidTheadElement)) |
| 122 | |
| 123 | ######################## |
| 124 | |
| 125 | # |
| 126 | set ocidPathArrayM to refMe's NSMutableArray's alloc()'s init() |
| 127 | # |
| 128 | set numTotalLine to 0 as integer |
| 129 | set numCntMachArray to ocidFilterdArray's |count|() |
| 130 | #【tbody】 |
| 131 | set ocidTbodyElement to (refMe's NSXMLElement's elementWithName:("tbody")) |
| 132 | #繰り返し |
| 133 | repeat with numItemNo from 1 to numCntMachArray by 1 |
| 134 | |
| 135 | |
| 136 | |
| 137 | set ocidItemDict to (ocidFilterdArray's objectAtIndex:(numItemNo - 1)) |
| 138 | set ocidName to (ocidItemDict's objectForKey:("_name")) |
| 139 | set ocidPath to (ocidItemDict's objectForKey:("path")) |
| 140 | set ocidCharSet to refMe's NSCharacterSet's URLPathAllowedCharacterSet() |
| 141 | set ocidEncString to (ocidPath's stringByAddingPercentEncodingWithAllowedCharacters:(ocidCharSet)) |
| 142 | # |
| 143 | (ocidPathArrayM's addObject:(ocidPath)) |
| 144 | #TRの開始 |
| 145 | set ocidTrElement to (refMe's NSXMLElement's elementWithName:("tr")) |
| 146 | #項番処理 |
| 147 | set ocidThElement to (refMe's NSXMLElement's elementWithName:("th")) |
| 148 | (ocidThElement's setStringValue:(numItemNo as text)) |
| 149 | (ocidTrElement's addChild:(ocidThElement)) |
| 150 | |
| 151 | |
| 152 | #リンク |
| 153 | set ocidTdElement to (refMe's NSXMLElement's elementWithName:("td")) |
| 154 | (ocidTdElement's setStringValue:(ocidName)) |
| 155 | (ocidTrElement's addChild:(ocidTdElement)) |
| 156 | #リンク |
| 157 | set ocidTdElement to (refMe's NSXMLElement's elementWithName:("td")) |
| 158 | set ocidAElement to (refMe's NSXMLElement's elementWithName:("a")) |
| 159 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("href") stringValue:(ocidEncString)) |
| 160 | (ocidAElement's addAttribute:(ocidAddNode)) |
| 161 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("target") stringValue:("_blank")) |
| 162 | (ocidAElement's addAttribute:(ocidAddNode)) |
| 163 | (ocidAElement's setStringValue:(ocidPath)) |
| 164 | (ocidTdElement's addChild:(ocidAElement)) |
| 165 | (ocidTrElement's addChild:(ocidTdElement)) |
| 166 | #パス |
| 167 | set ocidTdElement to (refMe's NSXMLElement's elementWithName:("td")) |
| 168 | set ocidINPUTElement to (refMe's NSXMLElement's elementWithName:("input")) |
| 169 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("type") stringValue:("text")) |
| 170 | (ocidINPUTElement's addAttribute:(ocidAddNode)) |
| 171 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("readonly") stringValue:("true")) |
| 172 | (ocidINPUTElement's addAttribute:(ocidAddNode)) |
| 173 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("onclick") stringValue:("this.select();")) |
| 174 | (ocidINPUTElement's addAttribute:(ocidAddNode)) |
| 175 | |
| 176 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("value") stringValue:(ocidPath)) |
| 177 | (ocidINPUTElement's addAttribute:(ocidAddNode)) |
| 178 | (ocidTdElement's addChild:(ocidINPUTElement)) |
| 179 | |
| 180 | (ocidTrElement's addChild:(ocidTdElement)) |
| 181 | (ocidTbodyElement's addChild:(ocidTrElement)) |
| 182 | end repeat |
| 183 | #TBODYをテーブルにセット |
| 184 | (ocidTableElement's addChild:(ocidTbodyElement)) |
| 185 | #【tfoot】 TRで |
| 186 | set ocidTfootElement to (refMe's NSXMLElement's elementWithName:("tfoot")) |
| 187 | set ocidTrElement to (refMe's NSXMLElement's elementWithName:("tr")) |
| 188 | #colspan指定して1行でセット |
| 189 | set ocidThElement to (refMe's NSXMLElement's elementWithName:("th")) |
| 190 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("colspan") stringValue:(4)) |
| 191 | (ocidThElement's addAttribute:(ocidAddNode)) |
| 192 | |
| 193 | # |
| 194 | set strContents to (" 項目数 : " & (numCntMachArray as text)) as text |
| 195 | (ocidThElement's setStringValue:(strContents)) |
| 196 | #THをTRにセットして |
| 197 | (ocidTrElement's addChild:(ocidThElement)) |
| 198 | #TRをTFOOTにセット |
| 199 | (ocidTfootElement's addChild:(ocidTrElement)) |
| 200 | #TFOOTをテーブルにセット |
| 201 | (ocidTableElement's addChild:(ocidTfootElement)) |
| 202 | #テーブルをアーティクルにセット |
| 203 | (ocidSetArticleElement's addChild:(ocidTableElement)) |
| 204 | #<HR> |
| 205 | set ocidHRElement to (refMe's NSXMLElement's elementWithName:("hr")) |
| 206 | (ocidSetArticleElement's addChild:(ocidHRElement)) |
| 207 | set ocidTextareaElement to (refMe's NSXMLElement's elementWithName:("textarea")) |
| 208 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("readonly") stringValue:("true")) |
| 209 | (ocidTextareaElement's addAttribute:(ocidAddNode)) |
| 210 | |
| 211 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("style") stringValue:("width: 80%;height: 360px;resize: none;box-sizing: border-box;")) |
| 212 | (ocidTextareaElement's addAttribute:(ocidAddNode)) |
| 213 | |
| 214 | |
| 215 | set ocidJoinText to ocidPathArrayM's componentsJoinedByString:(linefeed) |
| 216 | |
| 217 | (ocidTextareaElement's setStringValue:(ocidJoinText)) |
| 218 | (ocidSetArticleElement's addChild:(ocidTextareaElement)) |
| 219 | |
| 220 | ############################## |
| 221 | #HTMLにする |
| 222 | set ocidHTML to doMakeRootElement({ocidSetHeaderElement, ocidSetArticleElement, ocidSetFooterElement, strTitleText}) |
| 223 | ############################## |
| 224 | #保存 |
| 225 | |
| 226 | #読み取りやすい表示 |
| 227 | set ocidXMLdata to (ocidHTML's XMLDataWithOptions:(refMe's NSXMLNodePrettyPrint)) |
| 228 | #保存 |
| 229 | set listDone to (ocidXMLdata's writeToURL:(ocidSaveFilePathURL) options:(refMe's NSDataWritingAtomic) |error|:(reference)) |
| 230 | set aliasFilePath to (ocidSaveFilePathURL's absoluteURL()) as alias |
| 231 | |
| 232 | |
| 233 | |
| 234 | #処理終了時間 |
| 235 | set ocidEnd to refMe's CFAbsoluteTimeGetCurrent() |
| 236 | set strTime to (ocidEnd - ocidStart) as text |
| 237 | |
| 238 | |
| 239 | |
| 240 | |
| 241 | ############################## |
| 242 | set strDefaultAnswer to ocidJoinText as text |
| 243 | |
| 244 | ############################## |
| 245 | # ダイアログ |
| 246 | set strIconFilePath to ("/System/Library/UserNotifications/Bundles/com.apple.identityservicesd.firewall.bundle/Contents/Resources/Apple Care_Mac.icns") as text |
| 247 | set aliasIconFilePath to (POSIX file strIconFilePath) as alias |
| 248 | set strMsg to ("テキストの戻り値です" & return & "コピーできます") as text |
| 249 | set strTitle to ("処理の戻り値です") as text |
| 250 | set strOK to ("ファイルに保存する") as text |
| 251 | set strCancel to ("キャンセル") as text |
| 252 | set strOpenHTML to ("ブラウザで表示") as text |
| 253 | set listBotton to {strOpenHTML, strCancel, strOK} as list |
| 254 | try |
| 255 | tell application "System Events" |
| 256 | activate |
| 257 | set recordResult to (display dialog strMsg with title strTitle default answer strDefaultAnswer buttons listBotton default button strOpenHTML cancel button strCancel with icon aliasIconFilePath giving up after 20 without hidden answer) as record |
| 258 | end tell |
| 259 | on error strErrMsg number numErrNo |
| 260 | log strErrMsg & numErrNo |
| 261 | return false |
| 262 | end try |
| 263 | |
| 264 | set strResponseButton to (button returned of recordResult) as text |
| 265 | set boolGaveUp to (gave up of recordResult) as boolean |
| 266 | if boolGaveUp is true then |
| 267 | log "時間切れ" |
| 268 | return false |
| 269 | end if |
| 270 | set strResponseText to (text returned of recordResult) as text |
| 271 | if strResponseButton is strOK then |
| 272 | set appFileManager to refMe's NSFileManager's defaultManager() |
| 273 | set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask)) |
| 274 | set ocidDesktopDirPathURL to ocidURLsArray's firstObject() |
| 275 | set aliasDesktopDirPath to (ocidDesktopDirPathURL's absoluteURL()) as alias |
| 276 | set strIconFilePath to ("/System/Library/UserNotifications/Bundles/com.apple.identityservicesd.firewall.bundle/Contents/Resources/Apple Care_Mac.icns") as text |
| 277 | set aliasIconFilePath to (POSIX file strIconFilePath) as alias |
| 278 | # |
| 279 | set strBaseFileName to ("インテルアプリ一覧") as text |
| 280 | set strSaveExtension to ("txt") as text |
| 281 | set strDefaultFileName to ("" & strBaseFileName & "." & strSaveExtension & "") as text |
| 282 | set strMsg to ("名前を決めてください" & return & "拡張子は" & strSaveExtension & "です") as text |
| 283 | set strPromptText to "名前を決めてください" as text |
| 284 | #ファイル名 ダイアログ |
| 285 | tell application "SystemUIServer" |
| 286 | activate |
| 287 | set aliasSaveFilePath to (choose file name strMsg default location aliasDesktopDirPath default name strDefaultFileName with prompt strPromptText) as «class furl» |
| 288 | end tell |
| 289 | #出力パス |
| 290 | set strSaveFilePath to (POSIX path of aliasSaveFilePath) as text |
| 291 | set ocidSaveFilePathStr to refMe's NSString's stringWithString:(strSaveFilePath) |
| 292 | set ocidSaveFilePath to ocidSaveFilePathStr's stringByStandardizingPath() |
| 293 | set ocidSaveFilePathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:(ocidSaveFilePath) isDirectory:false) |
| 294 | set ocidContainerDirPathURL to ocidSaveFilePathURL's URLByDeletingLastPathComponent() |
| 295 | #拡張子 |
| 296 | set strExtension to (ocidSaveFilePathURL's pathExtension()) as text |
| 297 | #最後のアイテムがファイル名 |
| 298 | set strFileName to (ocidSaveFilePathURL's lastPathComponent()) as text |
| 299 | #拡張子のつけ忘れ対策 |
| 300 | if strFileName does not contain strSaveExtension then |
| 301 | set strFileName to (strFileName & "." & strSaveExtension) as text |
| 302 | set ocidSaveFilePathURL to ocidContainerDirPathURL's URLByAppendingPathComponent:(strFileName) |
| 303 | end if |
| 304 | #保存処理 |
| 305 | set ocidSaveString to refMe's NSMutableString's stringWithString:(strResponseText) |
| 306 | set ocidSaveString to (ocidSaveString's stringByReplacingOccurrencesOfString:(return & linefeed) withString:(linefeed)) |
| 307 | set ocidSaveString to (ocidSaveString's stringByReplacingOccurrencesOfString:(return) withString:(linefeed)) |
| 308 | set ocidSaveString to (ocidSaveString's stringByReplacingOccurrencesOfString:(linefeed & linefeed) withString:(linefeed)) |
| 309 | set listDone to ocidSaveString's writeToURL:(ocidSaveFilePathURL) atomically:(true) encoding:(refMe's NSUTF8StringEncoding) |error|:(reference) |
| 310 | return (first item of listDone) |
| 311 | else if strResponseButton is strOpenHTML then |
| 312 | |
| 313 | |
| 314 | ############################## |
| 315 | #【6】ブラウザで開く |
| 316 | |
| 317 | set strAppPath to ("/Applications/Safari.app") as text |
| 318 | set ocidAppPathStr to (refMe's NSString's stringWithString:(strAppPath)) |
| 319 | set ocidAppPath to ocidAppPathStr's stringByStandardizingPath() |
| 320 | set ocidAppPathURL to (refMe's NSURL's fileURLWithPath:(ocidAppPath) isDirectory:(false)) |
| 321 | set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace() |
| 322 | set ocidConfig to refMe's NSWorkspaceOpenConfiguration's configuration |
| 323 | (ocidConfig's setActivates:(refMe's NSNumber's numberWithBool:true)) |
| 324 | (ocidConfig's setHides:(refMe's NSNumber's numberWithBool:false)) |
| 325 | ## |
| 326 | set ocidOpenURLsArray to refMe's NSMutableArray's alloc()'s init() |
| 327 | (ocidOpenURLsArray's addObject:(ocidSaveFilePathURL)) |
| 328 | ## |
| 329 | (appSharedWorkspace's openURLs:(ocidOpenURLsArray) withApplicationAtURL:(ocidAppPathURL) configuration:(ocidConfig) completionHandler:(missing value)) |
| 330 | |
| 331 | end if |
| 332 | |
| 333 | |
| 334 | return ("処理時間:" & strTime) as text |
| 335 | |
| 336 | |
| 337 | |
| 338 | |
| 339 | |
| 340 | ############################################################ |
| 341 | # 基本的なHTMLの構造 |
| 342 | (* |
| 343 | doMakeRootElement({argHeaderContents, argArticleContents, argFooterContents,argTitleText}) |
| 344 | HTMLのBODY部 |
| 345 | header |
| 346 | article |
| 347 | footerにそれぞれAddchildするデータをリストで渡す |
| 348 | 戻り値はRootエレメントにセットされた |
| 349 | NSXMLDocumentを戻すので 保存すればOK |
| 350 | *) |
| 351 | ############################################################ |
| 352 | to doMakeRootElement({argHeaderContents, argArticleContents, argFooterContents, argTitleText}) |
| 353 | #XML初期化 |
| 354 | set ocidXMLDoc to refMe's NSXMLDocument's alloc()'s init() |
| 355 | ocidXMLDoc's setDocumentContentKind:(refMe's NSXMLDocumentHTMLKind) |
| 356 | # DTD付与 |
| 357 | set ocidDTD to refMe's NSXMLDTD's alloc()'s init() |
| 358 | ocidDTD's setName:("html") |
| 359 | ocidXMLDoc's setDTD:(ocidDTD) |
| 360 | # |
| 361 | set ocidRootElement to refMe's NSXMLElement's elementWithName:("html") |
| 362 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("lang") stringValue:("ja") |
| 363 | ocidRootElement's addAttribute:(ocidAddNode) |
| 364 | # |
| 365 | set ocidHeadElement to refMe's NSXMLElement's elementWithName:("head") |
| 366 | # |
| 367 | set ocidAddElement to refMe's NSXMLElement's elementWithName:("title") |
| 368 | ocidAddElement's setStringValue:(argTitleText) |
| 369 | ocidHeadElement's addChild:(ocidAddElement) |
| 370 | # http-equiv |
| 371 | set ocidAddElement to refMe's NSXMLElement's elementWithName:("meta") |
| 372 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("http-equiv") stringValue:("Content-Type") |
| 373 | ocidAddElement's addAttribute:(ocidAddNode) |
| 374 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("content") stringValue:("text/html; charset=UTF-8") |
| 375 | ocidAddElement's addAttribute:(ocidAddNode) |
| 376 | ocidHeadElement's addChild:(ocidAddElement) |
| 377 | # |
| 378 | set ocidAddElement to refMe's NSXMLElement's elementWithName:("meta") |
| 379 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("http-equiv") stringValue:("Content-Style-Type") |
| 380 | ocidAddElement's addAttribute:(ocidAddNode) |
| 381 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("content") stringValue:("text/css") |
| 382 | ocidAddElement's addAttribute:(ocidAddNode) |
| 383 | ocidHeadElement's addChild:(ocidAddElement) |
| 384 | # |
| 385 | set ocidAddElement to refMe's NSXMLElement's elementWithName:("meta") |
| 386 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("http-equiv") stringValue:("Content-Script-Type") |
| 387 | ocidAddElement's addAttribute:(ocidAddNode) |
| 388 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("content") stringValue:("text/javascript") |
| 389 | ocidAddElement's addAttribute:(ocidAddNode) |
| 390 | ocidHeadElement's addChild:(ocidAddElement) |
| 391 | # |
| 392 | set ocidAddElement to refMe's NSXMLElement's elementWithName:("meta") |
| 393 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("name") stringValue:("viewport") |
| 394 | ocidAddElement's addAttribute:(ocidAddNode) |
| 395 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("content") stringValue:("width=90%") |
| 396 | ocidAddElement's addAttribute:(ocidAddNode) |
| 397 | ocidHeadElement's addChild:(ocidAddElement) |
| 398 | # |
| 399 | set ocidAddElement to refMe's NSXMLElement's elementWithName:("style") |
| 400 | 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 input {max-width: 400px;} tbody td { word-wrap: break-word;max-width: 400px;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; } .tbody_th_title{text-align: left;} 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 } }") |
| 401 | ocidHeadElement's addChild:(ocidAddElement) |
| 402 | ocidRootElement's addChild:(ocidHeadElement) |
| 403 | # |
| 404 | #ボディエレメント |
| 405 | set ocidBodyElement to refMe's NSXMLElement's elementWithName:("body") |
| 406 | #ヘッダー |
| 407 | set ocidHeaderElement to refMe's NSXMLElement's elementWithName:("header") |
| 408 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("id") stringValue:("header") |
| 409 | ocidHeaderElement's addAttribute:(ocidAddNode) |
| 410 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("class") stringValue:("body_header") |
| 411 | ocidHeaderElement's addAttribute:(ocidAddNode) |
| 412 | ocidHeaderElement's addChild:(argHeaderContents) |
| 413 | ocidBodyElement's addChild:(ocidHeaderElement) |
| 414 | #アーティクル |
| 415 | set ocidArticleElement to refMe's NSXMLElement's elementWithName:("article") |
| 416 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("id") stringValue:("article") |
| 417 | ocidArticleElement's addAttribute:(ocidAddNode) |
| 418 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("class") stringValue:("body_article") |
| 419 | ocidArticleElement's addAttribute:(ocidAddNode) |
| 420 | ocidArticleElement's addChild:(argArticleContents) |
| 421 | ocidBodyElement's addChild:(ocidArticleElement) |
| 422 | #フッター |
| 423 | set ocidFooterElement to refMe's NSXMLElement's elementWithName:("footer") |
| 424 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("id") stringValue:("footer") |
| 425 | ocidFooterElement's addAttribute:(ocidAddNode) |
| 426 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("class") stringValue:("body_footer") |
| 427 | ocidFooterElement's addAttribute:(ocidAddNode) |
| 428 | ocidFooterElement's addChild:(argFooterContents) |
| 429 | ocidBodyElement's addChild:(ocidFooterElement) |
| 430 | #ボディをROOTエレメントにセット |
| 431 | ocidRootElement's addChild:(ocidBodyElement) |
| 432 | #ROOTをXMLにセット |
| 433 | ocidXMLDoc's setRootElement:(ocidRootElement) |
| 434 | #値を戻す |
| 435 | return ocidXMLDoc |
| 436 | end doMakeRootElement |
| 437 | |
| AppleScriptで生成しました | |
