Visual Studio Code

【セキュリティ】Cursor.app・Visual Studio Code.appコンソール上での『File Doesn't Exist』

File Doesn't Exist, Will Create: /some/dir/some/file
原因
ディスク(パス)に対してアクセス権が無い

対応
フルディスクアクセス権を付与する
CursorやCodeに対して『フルディスクアクセス』を付与するのは
とてつもなく『リスキー』な設定である事が前提にあります。
出所不明のソースを扱う機会の多い人は、やめた方が良いような気がする

セキュリティを考慮した理想は
実行と編集をわけて
実行はターミナル等を利用する方が良いような『気がする』
(どのみち実行するなら、『それ』だけについては、変わらないけど、他の面でのリスクが高くになる)


202505190520241_1410x3582
202505190520431_1402x6202
File Doesn't Exist.zsh

サンプルコード

サンプルソース(参考)
行番号ソース
001#!/bin/zsh --no-rcs
002#set -x
003#export PATH=/usr/bin:/bin:/usr/sbin:/sbin
004#com.cocolog-nifty.quicktimer.icefloe
005#################################################
006/usr/bin/sudo /usr/libexec/PlistBuddy -c "Print:Exclusions " "/System/Volumes/Data/.Spotlight-V100/VolumeConfiguration.plist"
007
008: <<'END_COMMENT'
009VS Codeやcursorのコンソールから実行するとエラーになる
010Print: Entry, ":Exclusions", Does Not Exist
011File Doesn't Exist, Will Create: /System/Volumes/Data/.Spotlight-V100/VolumeConfiguration.plist
012
013プライバシーとセキュリティの設定で『フルディスクアクセス』を付与する必要があります
014
015他者が作ったファイルを開く機会の多い方に対しては
016非常にリスキーな設定になります。
017『そこ』は留意した上で設定して運用しましょう
018
019END_COMMENT
AppleScriptで生成しました

| | コメント (0)

[Cursor]クリップボードのHTMLをファイル出力


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

クリップボードの中身のファイル保存Cursor用.applescript
ソース
001#! /usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003(*
004クリップボードの中身で保存可能なものを
005ダウンロードフォルダに保存します
006v2 リンクファイルを追加
007v2.1 テキストの中身がURLならWEBLOC保存
008v.2.2 Microsoft Edgeのオプション保存を追加
009org.microsoft.link-preview
010org.microsoft.titled-hyperlink
011v2.3 選択範囲テキストのフラグメントURLに対応
012v2.4 ローケーションファイルの拡張子の分岐を作成
013v2.4.1 画像をコピー等でテキスト無い場合のエラーに対応
014
015Cursor用にHTML出力にヘッダーをつけるようにした
016v1
017
018com.cocolog-nifty.quicktimer.icefloe *)
019----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
020use AppleScript version "2.8"
021use framework "Foundation"
022use framework "AppKit"
023use framework "UniformTypeIdentifiers"
024use scripting additions
025
026property refMe : a reference to current application
027
028
029tell application id "com.todesktop.230313mzl4w4u92"
030   tell application "System Events"
031      -->VS CODEと違いプロセス名はちゃんとしている
032      tell application process "Cursor"
033         tell front window
034            try
035               set strFileName to name as text
036            on error
037               set strFileName to "Cursor2HTML" as text
038            end try
039         end tell
040      end tell
041   end tell
042end tell
043
044################################
045##### パス関連
046################################
047###フォルダ名用に時間を取得する
048set strDateno to doGetDateNo("yyyyMMdd-hhmmss") as text
049###保存先
050set appFileManager to refMe's NSFileManager's defaultManager()
051set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSDownloadsDirectory) inDomains:(refMe's NSUserDomainMask))
052set ocidDownloadsDirPathURL to ocidURLsArray's firstObject()
053set strSubDirName to ("Pasteboard/" & strDateno) as text
054set ocidSaveParentsDirPathURL to ocidDownloadsDirPathURL's URLByAppendingPathComponent:(strSubDirName) isDirectory:(true)
055#フォルダ生成
056set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0
057ocidAttrDict's setValue:(448) forKey:(refMe's NSFilePosixPermissions)
058set listDone to appFileManager's createDirectoryAtURL:(ocidSaveParentsDirPathURL) withIntermediateDirectories:true attributes:(ocidAttrDict) |error|:(reference)
059if (item 1 of listDone) is true then
060   log "正常処理"
061else if (item 2 of listDone) ≠ (missing value) then
062   set strErrorNO to (item 2 of listDone)'s code() as text
063   set strErrorMes to (item 2 of listDone)'s localizedDescription() as text
064   refMe's NSLog("■" & strErrorNO & strErrorMes)
065   return "エラーしました" & strErrorNO & strErrorMes
066end if
067
068################################
069######ペーストボードを取得
070################################
071set ocidPasteboard to refMe's NSPasteboard's generalPasteboard()
072#タイプを取得
073set ocidPastBoardTypeArray to ocidPasteboard's types()
074log ocidPastBoardTypeArray as list
075
076set strText to ("")
077#########################
078#【1】FILEURL処理
079set boolContain to ocidPastBoardTypeArray's containsObject:("NSFilenamesPboardType")
080if boolContain is true then
081   set ocidPastBoardData to (ocidPasteboard's propertyListForType:("NSFilenamesPboardType"))
082   #パス出力用
083   set ocidFileNamesString to refMe's NSMutableString's alloc()'s init()
084   #順番に処理
085   repeat with itemData in ocidPastBoardData
086      #出力用のテキストにそのまま追加して改行入れる
087      (ocidFileNamesString's appendString:(itemData))
088      (ocidFileNamesString's appendString:("\n"))
089      #NSURLにして
090      set ocidItemFilePath to itemData's stringByStandardizingPath()
091      set ocidFilePathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:(ocidItemFilePath))
092      #ファイル名から
093      set ocidFileName to ocidFilePathURL's lastPathComponent()
094      set ocidBaseFileName to ocidFileName's stringByDeletingPathExtension()
095      set ocidSaveFileName to (ocidBaseFileName's stringByAppendingPathExtension:("fileloc"))
096      #保存先のURLを作成
097      set ocidPlistFilePathURL to (ocidSaveParentsDirPathURL's URLByAppendingPathComponent:(ocidSaveFileName) isDirectory:(false))
098      set ocidItemFilePath to ocidFilePathURL's absoluteString()
099      #DICTにして
100      set ocidPlistDict to refMe's NSMutableDictionary's alloc()'s init()
101      (ocidPlistDict's setValue:(ocidItemFilePath) forKey:("URL"))
102      #PLIST
103      set ocidFormat to (refMe's NSPropertyListXMLFormat_v1_0)
104      set listResponse to (refMe's NSPropertyListSerialization's dataWithPropertyList:(ocidPlistDict) format:(ocidFormat) options:0 |error|:(reference))
105      set ocidPlistData to (item 1 of listResponse)
106      #保存
107      set ocidOption to (refMe's NSDataWritingAtomic)
108      set listDone to (ocidPlistData's writeToURL:(ocidPlistFilePathURL) options:(ocidOption) |error|:(reference))
109      
110   end repeat
111   set ocidSaveFilePathURL to (ocidSaveParentsDirPathURL's URLByAppendingPathComponent:("NSFilenamesPboardType.txt") isDirectory:(false))
112   set listDone to ocidFileNamesString's writeToURL:(ocidSaveFilePathURL) atomically:(true) encoding:(refMe's NSUTF8StringEncoding) |error|:(reference)
113end if
114
115#########################
116#【2】org.chromium.source-url処理
117set boolContain to ocidPastBoardTypeArray's containsObject:("org.chromium.source-url")
118if boolContain is true then
119   set ocidPastBoardData to (ocidPasteboard's dataForType:("org.chromium.source-url"))
120   set ocidURLstring to refMe's NSString's alloc()'s initWithData:(ocidPastBoardData) encoding:(refMe's NSUTF8StringEncoding)
121   #一度URLにして
122   set ocidURL to (refMe's NSURL's alloc()'s initWithString:(ocidURLstring))
123   
124   #ファイル名用にHOST名を取得
125   set strHostName to ocidURL's |host|() as text
126   #保存用拡張子を付与
127   set ocidItemSaveFileName to ("" & strHostName & ".webloc")
128   #DICTにして
129   set ocidPlistDict to refMe's NSMutableDictionary's alloc()'s init()
130   (ocidPlistDict's setValue:(ocidURLstring) forKey:("URL"))
131   #PLIST
132   set ocidFormat to (refMe's NSPropertyListXMLFormat_v1_0)
133   set listResponse to (refMe's NSPropertyListSerialization's dataWithPropertyList:(ocidPlistDict) format:(ocidFormat) options:0 |error|:(reference))
134   set ocidPlistData to (item 1 of listResponse)
135   #保存先
136   set ocidPlistFilePathURL to (ocidSaveParentsDirPathURL's URLByAppendingPathComponent:(ocidItemSaveFileName) isDirectory:(false))
137   #保存
138   set ocidOption to (refMe's NSDataWritingAtomic)
139   set listDone to (ocidPlistData's writeToURL:(ocidPlistFilePathURL) options:(ocidOption) |error|:(reference))
140   ##テキストでも保存しておく
141   set ocidItemSaveFileName to ("org.chromium.source-url.txt") as text
142   set ocidSaveURLFilePathURL to (ocidSaveParentsDirPathURL's URLByAppendingPathComponent:(ocidItemSaveFileName) isDirectory:(false))
143   #
144   set listDone to ocidURLstring's writeToURL:(ocidSaveURLFilePathURL) atomically:(true) encoding:(refMe's NSUTF8StringEncoding) |error|:(reference)
145   
146end if
147#########################
148#カレンダー
149set boolContain to ocidPastBoardTypeArray's containsObject:("com.apple.calendar.pasteboard.event")
150if boolContain is true then
151   set ocidPastBoardData to (ocidPasteboard's dataForType:("com.apple.calendar.pasteboard.event"))
152   set ocidEventIDstring to refMe's NSString's alloc()'s initWithData:(ocidPastBoardData) encoding:(refMe's NSUTF8StringEncoding)
153   log ocidEventIDstring as text
154end if
155
156set boolContain to ocidPastBoardTypeArray's containsObject:("com.apple.iCal.pasteboard.dragOriginDate")
157if boolContain is true then
158   set ocidPastBoardData to (ocidPasteboard's dataForType:("com.apple.iCal.pasteboard.dragOriginDate"))
159   set ocidEventIDstring to refMe's NSString's alloc()'s initWithData:(ocidPastBoardData) encoding:(refMe's NSUTF8StringEncoding)
160   log ocidEventIDstring as text
161end if
162
163#########################
164#【3】public.url処理
165set boolContain to ocidPastBoardTypeArray's containsObject:("public.url")
166if boolContain is true then
167   set ocidPastBoardData to (ocidPasteboard's dataForType:("public.url"))
168   set ocidURLstring to refMe's NSString's alloc()'s initWithData:(ocidPastBoardData) encoding:(refMe's NSUTF8StringEncoding)
169   set ocidURL to (refMe's NSURL's alloc()'s initWithString:(ocidURLstring))
170   #
171   set ocidURLomponents to refMe's NSURLComponents's componentsWithURL:(ocidURL) resolvingAgainstBaseURL:(false)
172   set strScheme to ocidURLomponents's |scheme|() as text
173   if strScheme starts with "http" then
174      set strSaveExtension to ("webloc") as text
175   else if strScheme starts with "mail" then
176      set strSaveExtension to ("mailloc") as text
177   else if strScheme starts with "ftp" then
178      set strSaveExtension to ("ftploc") as text
179   else if strScheme starts with "atp" then
180      set strSaveExtension to ("afploc") as text
181   else if strScheme starts with "file" then
182      set strSaveExtension to ("fileloc") as text
183   else if strScheme starts with "news" then
184      set strSaveExtension to ("newsloc") as text
185   else if strScheme starts with "vscode-file" then
186      set strSaveExtension to ("fileloc") as text
187   else
188      set strSaveExtension to ("inetloc") as text
189   end if
190   
191   set boolContain to ocidPastBoardTypeArray's containsObject:("public.url-name")
192   if boolContain is true then
193      set ocidPastBoardData to (ocidPasteboard's dataForType:("public.url-name"))
194      set ocidURLname to refMe's NSString's alloc()'s initWithData:(ocidPastBoardData) encoding:(refMe's NSUTF8StringEncoding)
195      set strSaveFileName to ("" & (ocidURLname as text) & "." & strSaveExtension & "") as text
196   else if boolContain is false then
197      set ocidHostName to ocidURL's |host|()
198      set strSaveFileName to ("" & (ocidHostName as text) & "." & strSaveExtension & "") as text
199   end if
200   #DICTにして
201   set ocidPlistDict to refMe's NSMutableDictionary's alloc()'s init()
202   (ocidPlistDict's setValue:(ocidURLstring) forKey:("URL"))
203   #PLIST
204   set ocidFormat to (refMe's NSPropertyListXMLFormat_v1_0)
205   set listResponse to (refMe's NSPropertyListSerialization's dataWithPropertyList:(ocidPlistDict) format:(ocidFormat) options:0 |error|:(reference))
206   set ocidPlistData to (item 1 of listResponse)
207   #保存先
208   set ocidPlistFilePathURL to (ocidSaveParentsDirPathURL's URLByAppendingPathComponent:(strSaveFileName) isDirectory:(false))
209   #保存
210   set ocidOption to (refMe's NSDataWritingAtomic)
211   set listDone to (ocidPlistData's writeToURL:(ocidPlistFilePathURL) options:(ocidOption) |error|:(reference))
212end if
213#全タイプ処理する
214repeat with itemPasteType in ocidPastBoardTypeArray
215   #【1】全タイプ処理 拡張子を決めておく
216   if (itemPasteType as text) is "public.utf8-plain-text" then
217      set strExtension to ("utf8.txt") as text
218   else if (itemPasteType as text) is "public.utf16-external-plain-text" then
219      set strExtension to ("utf16.txt") as text
220   else
221      #UTTypeを取得
222      set ocidUTType to (refMe's UTType's typeWithIdentifier:(itemPasteType))
223      #取得できない
224      if ocidUTType = (missing value) then
225         set strExtension to (missing value)
226      else if ocidUTType ≠ (missing value) then
227         set ocidExtension to (ocidUTType's preferredFilenameExtension())
228         if ocidExtension = (missing value) then
229            set strExtension to (missing value)
230         else
231            set strExtension to (ocidExtension) as text
232         end if
233      end if
234   end if
235   #【2】データを取得
236   if strExtension = (missing value) then
237      #拡張子がわからなかったモノは処理しない
238   else
239      log strExtension
240      #データ取り出し
241      set ocidPastBoardData to (ocidPasteboard's dataForType:(itemPasteType))
242      if strExtension is "utf8.txt" then
243         set ocidTypeClassArray to (refMe's NSMutableArray's alloc()'s init())
244         (ocidTypeClassArray's addObject:(refMe's NSString))
245         set ocidReadString to (ocidPasteboard's readObjectsForClasses:(ocidTypeClassArray) options:(missing value))
246         set strText to ocidReadString as text
247      end if
248      #保存先パス
249      #ファイル名はUTI
250      set ocidBaseFilePathURL to (ocidSaveParentsDirPathURL's URLByAppendingPathComponent:(itemPasteType) isDirectory:(false))
251      #拡張子つけて
252      set ocidSaveFilePathURL to (ocidBaseFilePathURL's URLByAppendingPathExtension:(strExtension))
253      #保存
254      set ocidOption to (refMe's NSDataWritingAtomic)
255      set listDone to (ocidPastBoardData's writeToURL:(ocidSaveFilePathURL) options:(ocidOption) |error|:(reference))
256      if (item 1 of listDone) is true then
257         log "正常処理"
258      else if (item 2 of listDone) ≠ (missing value) then
259         set strErrorNO to (item 2 of listDone)'s code() as text
260         set strErrorMes to (item 2 of listDone)'s localizedDescription() as text
261         refMe's NSLog("■" & strErrorNO & strErrorMes)
262         return "エラーしました" & strErrorNO & strErrorMes
263      end if
264   end if
265end repeat
266
267
268
269################################
270#テキストがURLならWEBLOC保存を試す
271################################
272set ocidURLstring to refMe's NSString's stringWithString:(strText)
273set ocidURLstring to (ocidURLstring's stringByReplacingOccurrencesOfString:("\r") withString:("\n"))
274set ocidURLstring to (ocidURLstring's stringByReplacingOccurrencesOfString:("\n\n") withString:("\n"))
275set ocidLineArray to ocidURLstring's componentsSeparatedByString:("\n")
276repeat with itemLine in ocidLineArray
277   set ocidLineString to (itemLine's stringByReplacingOccurrencesOfString:("\t") withString:(""))
278   set boolHas to (ocidLineString's hasPrefix:("http")) as boolean
279   if boolHas is true then
280      set ocidURL to (refMe's NSURL's alloc()'s initWithString:(ocidURLstring))
281      set ocidHOST to ocidURL's |host|()
282      set strSaveFileName to ("" & (ocidHOST as text) & ".make.webloc") as text
283      set ocidSaveFilePathURL to (ocidSaveParentsDirPathURL's URLByAppendingPathComponent:(strSaveFileName) isDirectory:(false))
284      set ocidURLstring to ocidURL's absoluteString()
285      #
286      set ocidPlistDict to refMe's NSMutableDictionary's alloc()'s init()
287      (ocidPlistDict's setValue:(ocidURLstring) forKey:("URL"))
288      #PLIST2NSDATA(MutableContainersAndLeaves)
289      set ocidFromat to (refMe's NSPropertyListXMLFormat_v1_0)
290      set ocidFromat to (refMe's NSPropertyListBinaryFormat_v1_0)
291      set listResponse to (refMe's NSPropertyListSerialization's dataWithPropertyList:(ocidPlistDict) format:(ocidFromat) options:0 |error|:(reference))
292      set ocidPlistData to (item 1 of listResponse)
293      #NSDATA
294      set ocidOption to (refMe's NSDataWritingAtomic)
295      set listDone to (ocidPlistData's writeToURL:(ocidSaveFilePathURL) options:(ocidOption) |error|:(reference))
296   end if
297end repeat
298
299################################
300##### Microsoft Edgeカスタム
301################################
302set ocidPastBoardData to (ocidPasteboard's dataForType:("org.microsoft.link-preview"))
303if ocidPastBoardData ≠ (missing value) then
304   set ocidJsonString to refMe's NSString's alloc()'s initWithData:(ocidPastBoardData) encoding:(refMe's NSUTF8StringEncoding)
305   set strSaveFileName to ("org.microsoft.link-preview.json") as text
306   set ocidSaveFilePathURL to (ocidSaveParentsDirPathURL's URLByAppendingPathComponent:(strSaveFileName) isDirectory:(false))
307   set listDone to ocidJsonString's writeToURL:(ocidSaveFilePathURL) atomically:(true) encoding:(refMe's NSUTF8StringEncoding) |error|:(reference)
308end if
309################################
310##### Microsoft Edgeカスタム
311################################
312set ocidPastBoardString to (ocidPasteboard's stringForType:("org.microsoft.titled-hyperlink"))
313if ocidPastBoardString ≠ (missing value) then
314   set ocidPastBoardString to (ocidPastBoardString's stringByReplacingOccurrencesOfString:("<meta charset='utf-8'>") withString:(""))
315   set strSaveFileName to ("org.microsoft.link-preview.html") as text
316   set ocidSaveFilePathURL to (ocidSaveParentsDirPathURL's URLByAppendingPathComponent:(strSaveFileName) isDirectory:(false))
317   set listDone to ocidPastBoardString's writeToURL:(ocidSaveFilePathURL) atomically:(true) encoding:(refMe's NSUTF8StringEncoding) |error|:(reference)
318end if
319################################
320##### public.htmlカスタム
321################################
322set ocidPastBoardString to (ocidPasteboard's stringForType:("public.html"))
323if ocidPastBoardString ≠ (missing value) then
324   set ocidPastBoardString to (ocidPastBoardString's stringByReplacingOccurrencesOfString:("<meta charset='utf-8'>") withString:("<!DOCTYPE html><html lang=\"ja\"><head><title>" & strFileName & "</title><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta name=\"viewport\" content=\"width=740\"><style>body {margin: 10px;background-color: #1e1e1e;font-family: OsakaMonoLocal, Osaka-Mono, Menlo, Monaco, 'Courier New', monospace;font-weight: 400;font-size: 12pt;color: #679AD1;}</style></head><body><header id=\"header\" class=\"body_header\"></header><article id=\"article\" class=\"body_article\">"))
325   ocidPastBoardString's appendString:("</article><footer id=\"footer\" class=\"body_footer\"></footer></body></html>")
326   
327   set strSaveFileName to ("public.html") as text
328   set ocidSaveFilePathURL to (ocidSaveParentsDirPathURL's URLByAppendingPathComponent:(strSaveFileName) isDirectory:(false))
329   set listDone to ocidPastBoardString's writeToURL:(ocidSaveFilePathURL) atomically:(true) encoding:(refMe's NSUTF8StringEncoding) |error|:(reference)
330end if
331
332
333################################
334##### 保存先を開く
335################################
336set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace()
337set boolDone to appSharedWorkspace's openURL:(ocidSaveParentsDirPathURL)
338
339################################
340##### ファイル名用の時間
341################################
342to doGetDateNo(strDateFormat)
343   ####日付情報の取得
344   set ocidDate to current application's NSDate's |date|()
345   ###日付のフォーマットを定義
346   set ocidNSDateFormatter to current application's NSDateFormatter's alloc()'s init()
347   ocidNSDateFormatter's setLocale:(current application's NSLocale's localeWithLocaleIdentifier:"ja_JP_POSIX")
348   ocidNSDateFormatter's setDateFormat:strDateFormat
349   set ocidDateAndTime to ocidNSDateFormatter's stringFromDate:ocidDate
350   set strDateAndTime to ocidDateAndTime as text
351   return strDateAndTime
352end doGetDateNo
AppleScriptで生成しました

| | コメント (0)

[Cursor]BLOG投稿用 Cursor(Vs Code互換のElectronアプリ)のHTMLコピーから投稿用のHTMLへ整形する 

202505180525121_1430x940
Cursor2HTMLv1.scpt

AppleScript サンプルコード

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

AppleScript サンプルソース(参考)
行番号ソース
001#!/usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003(*
004元になっているのはVS CODE用のスクリプト
005v5 テキストファイルを後から開くようにした
006v5 HTMLのファイル名の日付を24時間表記にした
007v6 1行目の表記を戻した
008v6 1行目の判定方法を変更した
009v6 ファイル名を反映させるようにした
010v6.1 一部無駄な改行が入るのを修正した
011---ここまでCODE用
012違っているのは
013バンドルIDとプロセス名ぐらいでほとんど修正していない
014v1  Cursor用に手直し版
015
016
017要アクセシビリティアクセス
018システム設定>プライバシーとセキュリティ>アクセシビリティで
019Cursorに許可を与えないとファイル名は取得できない
020
021対象のアプリケーションの前面ドキュメントをコピーしてから実行
022
023com.cocolog-nifty.quicktimer.icefloe *)
024----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
025use AppleScript version "2.8"
026use framework "Foundation"
027use framework "AppKit"
028use scripting additions
029property refMe : a reference to current application
030set appFileManager to refMe's NSFileManager's defaultManager()
031
032##########################################
033#ファイル名の取得を試みる
034#ここ=バンドルIDは今後変更になる可能性が高い
035tell application id "com.todesktop.230313mzl4w4u92"
036  tell application "System Events"
037    -->VS CODEと違いプロセス名はちゃんとしている
038    tell application process "Cursor"
039      tell front window
040        try
041          set strFileName to name as text
042        on error
043          set strFileName to "com.cocolog-nifty.quicktimer.scpt" as text
044        end try
045      end tell
046    end tell
047  end tell
048end tell
049
050
051#拡張子をscptにする
052set strDelim to AppleScript's text item delimiters
053set AppleScript's text item delimiters to "."
054set listFileName to every text item of strFileName
055copy "scpt" to last item of listFileName
056set strScptFileName to listFileName as text
057set AppleScript's text item delimiters to strDelim
058
059
060
061##########################################
062###保存先確保
063##########################################
064set ocidHomeDirURL to appFileManager's homeDirectoryForCurrentUser()
065set ocidSitesDirPathURL to ocidHomeDirURL's URLByAppendingPathComponent:("Sites") isDirectory:(true)
066set ocidLocalizedFilePathURL to ocidSitesDirPathURL's URLByAppendingPathComponent:(".localized") isDirectory:(false)
067set ocidLocalizedFilePath to ocidLocalizedFilePathURL's |path|()
068set ocidSaveDirPathURL to ocidSitesDirPathURL's URLByAppendingPathComponent:("TemporaryItems") isDirectory:(true)
069set ocidSaveDirPath to ocidSaveDirPathURL's |path|()
070set boolExists to appFileManager's fileExistsAtPath:(ocidSaveDirPath) isDirectory:(true)
071if boolExists = true then
072  log "すでに保存先はあります"
073else if boolExists = false then
074  log "保存先が無いのでフォルダを作ります"
075  set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0
076  # 777-->511 755-->493 700-->448 766-->502
077  ocidAttrDict's setValue:(493) forKey:(refMe's NSFilePosixPermissions)
078  set listDone to appFileManager's createDirectoryAtURL:(ocidSitesDirPathURL) withIntermediateDirectories:true attributes:(ocidAttrDict) |error| :(reference)
079  if (item 2 of listDone) (missing value) then
080    log (item 2 of listDone)'s localizedDescription() as text
081    return "フォルダの作成に失敗しました"
082  end if
083  ocidAttrDict's setValue:(511) forKey:(refMe's NSFilePosixPermissions)
084  set listDone to appFileManager's createDirectoryAtURL:(ocidSaveDirPathURL) withIntermediateDirectories:true attributes:(ocidAttrDict) |error| :(reference)
085  if (item 2 of listDone) (missing value) then
086    log (item 2 of listDone)'s localizedDescription() as text
087    return "フォルダの作成に失敗しました"
088  end if
089  ocidAttrDict's setValue:(493) forKey:(refMe's NSFilePosixPermissions)
090  set boolDone to appFileManager's createFileAtPath:(ocidLocalizedFilePath) |contents|:("") attributes:(ocidAttrDict)
091  if (boolDone) is (false) then
092    return "Localizedファイルの作成に失敗しました"
093  end if
094end if
095###テキストはテンポラリに保存ディレクトリ
096set ocidTempDirURL to appFileManager's temporaryDirectory()
097set ocidTdirPathURL to ocidTempDirURL's URLByDeletingLastPathComponent()
098set ocidTtmpDirPathURL to ocidTdirPathURL's URLByAppendingPathComponent:("TemporaryItems") isDirectory:(true)
099set ocidTtmpDirPath to ocidTtmpDirPathURL's |path|()
100set boolExists to appFileManager's fileExistsAtPath:(ocidTtmpDirPath) isDirectory:(true)
101if boolExists = true then
102  log "すでに保存先はあります"
103else if boolExists = false then
104  log "保存先が無いのでフォルダを作ります"
105  set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0
106  # 777-->511 755-->493 700-->448 766-->502
107  ocidAttrDict's setValue:(511) forKey:(refMe's NSFilePosixPermissions)
108  set listDone to appFileManager's createDirectoryAtURL:(ocidTtmpDirPathURL) withIntermediateDirectories:true attributes:(ocidAttrDict) |error| :(reference)
109  if (item 2 of listDone) (missing value) then
110    log (item 2 of listDone)'s localizedDescription() as text
111    return "フォルダの作成に失敗しました"
112  end if
113end if
114###保存ファイルパス
115set strTime to doGetDateNo("yyyyMMdd_HHmmss") as text
116####ファイル名
117set strHtmlFileName to ("" & strTime & ".html") as text
118set strTextFileName to ("" & strTime & ".txt") as text
119###パスURL
120set ocidHTMLFilePathURL to ocidSaveDirPathURL's URLByAppendingPathComponent:(strHtmlFileName) isDirectory:(false)
121set ocidTextFilePathURL to ocidTtmpDirPathURL's URLByAppendingPathComponent:(strTextFileName) isDirectory:(false)
122##########################################
123###ペーストボード
124##########################################
125set ocidPasteboard to refMe's NSPasteboard's generalPasteboard()
126##中に格納されているデータタイプを取得
127set ocidPastBoardTypeArray to ocidPasteboard's types
128##TEXTを受け取る
129set boolRTF to ocidPastBoardTypeArray's containsObject:("public.rtf")
130set boolText to ocidPastBoardTypeArray's containsObject:("public.utf8-plain-text")
131set boolHTML to ocidPastBoardTypeArray's containsObject:("public.html")
132if boolText is true then
133  set ocidPublicText to ocidPasteboard's stringForType:(refMe's NSPasteboardTypeString)
134  set ocidTextArray to ocidPublicText's componentsSeparatedByString:"\n"
135  set ocidFirstLine to ocidTextArray's firstObject()
136  set boolOsa to ocidFirstLine's containsString:("osascript")
137else
138  display alert "内容をコピーしてから実行してね(Visual Studio Code専用です。)"
139  return "内容をコピーしてから実行してね(Visual Studio Code専用です。)"
140end if
141if boolHTML is true then
142  set ocidPublicHTML to ocidPasteboard's stringForType:(refMe's NSPasteboardTypeHTML)
143else
144  display alert "内容をコピーしてから実行してね(Visual Studio Code専用です。)"
145  return "内容をコピーしてから実行してね(Visual Studio Code専用です。)"
146end if
147##########################################
148######コピー用のテキストの事前置換 ここはお好み用
149##########################################
150set ocidPublicText to doRegrExReplace(ocidPublicText, "#!/", "#!/")
151set ocidPublicText to doRegrExReplace(ocidPublicText, "APPkit", "AppKit")
152
153
154##########################################
155######コピーボタン用 text
156##########################################
157###置換レコード
158set recordEntityMap to {|&|:"&amp;", |<|:"&lt;", |>|:"&gt;", |"|:"&quot;", |'|:"&apos;", |=|:"&#x3D;", |+|:"&#x2B;", |\\|:"&bsol;", |$|:"&#36;"} as record
159###ディクショナリにして
160set ocidEntityMap to refMe's NSDictionary's alloc()'s initWithDictionary:(recordEntityMap)
161###キーの一覧を取り出します
162set ocidAllKeys to ocidEntityMap's allKeys()
163###可変テキストにして
164set ocidTextToEncode to refMe's NSMutableString's alloc()'s initWithCapacity:0
165ocidTextToEncode's setString:(ocidPublicText)
166###取り出したキー一覧を順番に処理
167repeat with itemAllKey in ocidAllKeys
168  ##キーの値を取り出して
169  set ocidMapValue to (ocidEntityMap's valueForKey:itemAllKey)
170  ##置換
171  set ocidEncodedText to (ocidTextToEncode's stringByReplacingOccurrencesOfString:(itemAllKey) withString:(ocidMapValue))
172  ##次の変換に備える
173  set ocidTextToEncode to ocidEncodedText
174end repeat
175####テキスト確定させて
176set strEncodedText to ocidEncodedText as text
177###HTMLのエレメントID用のランダム番号3桁
178set num3Digit to random number from 100 to 999
179###JAVAASCRIPT整形
180set strJsText to ("<script>const elmentButtonCopy" & num3Digit & " = document.getElementById('buttonCopy" & num3Digit & "');const elmentInputText" & num3Digit & " = document.getElementById('inputText" & num3Digit & "');elmentButtonCopy" & num3Digit & ".addEventListener('click', () => {const strInputTextValue = elmentInputText" & num3Digit & ".value;return navigator.clipboard.writeText(strInputTextValue);})</script>") as text
181###HTML整形
182set strCopyHTML to ("<textarea id=\"inputText" & num3Digit & "\" type=\"text\" hidden readonly>" & strEncodedText & "</textarea>") as text
183###ボタン用CSS
184set strCopyBottonCSS to ("#buttonCopy" & num3Digit & "{background-color:#569cd6;border:none;color:white;padding:15px32px;text-align:center;text-decoration:none;display:inline-block;font-size:16px;margin:4px2px;cursor:pointer;border-radius:10px;}") as text
185###出来上がり
186set strCopyLinkText to (strCopyHTML & "<button id=\"buttonCopy" & num3Digit & "\">クリップボードへコピー</button>" & strJsText) as text
187set strJsLinkText to ("<span class=\"javascript_botton\">" & strCopyLinkText & "</span>") as text
188
189##########################################
190######リンクボタン AppleScript
191##########################################
192if boolOsa is true then
193  ########   %エンコードする
194  ##キャラクタセットを指定
195  set ocidChrSet to refMe's NSCharacterSet's URLQueryAllowedCharacterSet
196  ###ペーストボードの内容をキャラクタセットで変換
197  set ocidTextEncodeAS to ocidPublicText's stringByAddingPercentEncodingWithAllowedCharacters:(ocidChrSet)
198  ###可変テキストに格納しておく
199  set ocidEncodedText to refMe's NSMutableString's alloc()'s initWithCapacity:0
200  ocidEncodedText's setString:(ocidTextEncodeAS)
201  ########   置換 %エンコードの追加処理
202  ###置換レコード
203  set recordPercentMap to {|+|:"%2B", |=|:"%3D", |&|:"%26", |$|:"%24"} as record
204  ###ディクショナリにして
205  set ocidPercentMap to refMe's NSDictionary's alloc()'s initWithDictionary:(recordPercentMap)
206  ###キーの一覧を取り出します
207  set ocidAllKeys to ocidPercentMap's allKeys()
208  ###取り出したキー一覧を順番に処理
209  repeat with itemAllKey in ocidAllKeys
210    ##キーの値を取り出して
211    set ocidMapValue to (ocidPercentMap's valueForKey:itemAllKey)
212    ##置換
213    set ocidEncodedText to (ocidEncodedText's stringByReplacingOccurrencesOfString:(itemAllKey) withString:(ocidMapValue))
214    ##次の変換に備える
215    set ocidTextToEncode to ocidEncodedText
216  end repeat
217  set strEncodedText to ocidTextToEncode as text
218  ##HTML生成
219  set strAsLinkText to "<span class=\"openscript\"><a href=\"applescript://com.apple.scripteditor?action=new&name=" & strScptFileName & "&script=" & strEncodedText & "\" title=\"Open in Script Editor\" class=\"open-script-editor\">【スクリプトエディタで開く】</a></span>" as text
220  set strLinkBotton to ("<p class=\"script-copy-botton\">" & strAsLinkText & "  |  " & strJsLinkText & "</p>") as text
221else
222  set strLinkBotton to ("<p class=\"script-copy-botton\">" & strJsLinkText & "</p>") as text
223end if
224##
225
226##########################################
227######本処理 開始
228##########################################
229##メタとDiv要素だけあらかじめ削除しておく
230set ocidPublicHTML to doRegrExReplace(ocidPublicHTML, "  ", "  ")
231set ocidPublicHTML to doRegrExReplace(ocidPublicHTML, "#!/", "#!/")
232set ocidPublicHTML to doRegrExReplace(ocidPublicHTML, "<meta charset='utf-8'>", "")
233set ocidPublicHTML to doRegrExReplace(ocidPublicHTML, "<br>", "\n")
234set ocidPublicHTML to doRegrExReplace(ocidPublicHTML, "<div><span", "\n<span")
235set ocidPublicHTML to doRegrExReplace(ocidPublicHTML, "</span></div>", "</span>")
236set ocidPublicHTML to doRegrExReplace(ocidPublicHTML, "</span></div>", "</span>\n</div>")
237set ocidPublicHTML to doRegrExReplace(ocidPublicHTML, "\n</div>", "")
238
239#好みの追加
240set ocidBaseHTML to (ocidPublicHTML's stringByReplacingOccurrencesOfString:("<span style=\"color: #ffffff;font-style: italic;\">") withString:("<span style=\"color: #6D6D6D;font-style: italic;\">"))
241set ocidBaseHTML to (ocidBaseHTML's stringByReplacingOccurrencesOfString:("<span style=\"color: #d4d4d4;\">use ") withString:("<span style=\"color: #569cd6;\">use "))
242set ocidBaseHTML to (ocidBaseHTML's stringByReplacingOccurrencesOfString:("<span style=\"color: #d4d4d4;\"> as ") withString:("<span style=\"color: #569cd6;\"> as "))
243set ocidBaseHTML to (ocidBaseHTML's stringByReplacingOccurrencesOfString:("refMe's") withString:("</span><span style=\"color: #C55F8F;\">refMe's</span><span style=\"color: #d4d4d4;\">"))
244
245set ocidStrRange to ocidBaseHTML's rangeOfString:(ocidBaseHTML)
246ocidBaseHTML's replaceOccurrencesOfString:("(\\bNS\\w*?\\b)") withString:("</span><span style=\"color: #C55F8F;\">$1</span><span style=\"color: #d4d4d4;\">") options:(refMe's NSRegularExpressionSearch) range:(ocidStrRange)
247
248set ocidBaseHTML to (ocidBaseHTML's stringByReplacingOccurrencesOfString:("set</span><span style=\"color: #d4d4d4;\"> ") withString:("set</span><span style=\"color: #F1EEC8;\">&#160;"))
249set ocidBaseHTML to (ocidBaseHTML's stringByReplacingOccurrencesOfString:("<span style=\"color: #d4d4d4;\">return</span>") withString:("<span style=\"color: #569cd6;\">return</span>"))
250set ocidBaseHTML to (ocidBaseHTML's stringByReplacingOccurrencesOfString:(" |error| ") withString:("</span><span style=\"color: #569cd6;\"> |error| </span><span style=\"color: #d4d4d4;\">"))
251
252set ocidStrRange to ocidBaseHTML's rangeOfString:(ocidBaseHTML)
253ocidBaseHTML's replaceOccurrencesOfString:("(\\bocid\\w*?\\b)") withString:("</span><span style=\"color: #F1EEC8;\">$1</span><span style=\"color: #d4d4d4;\">") options:(refMe's NSRegularExpressionSearch) range:(ocidStrRange)
254
255set ocidPublicHTML to (ocidBaseHTML's stringByReplacingOccurrencesOfString:("\"> </span>") withString:("\">&#160;</span>"))
256##########################################
257#行毎のリストにしておく
258set ocidCharSet to refMe's NSCharacterSet's newlineCharacterSet()
259set ocidHTMLArray to ocidPublicHTML's componentsSeparatedByCharactersInSet:(ocidCharSet)
260#一番外になるDIVをとっておく
261set ocidOuterDiv to ocidHTMLArray's objectAtIndex:(0)
262#その上で削除
263ocidHTMLArray's removeObjectAtIndex:(0)
264##########################################
265######XML テーブル生成開始
266##########################################
267if boolOsa is true then
268  # タイトル headerとタイトル用
269  set strTitleText to ("AppleScript サンプルコード") as text
270  #サブタイトル article
271  set strSubTitle to ("AppleScript サンプルコード") as text
272  #キャプション用のテキスト
273  set strCaption to ("AppleScript サンプルソース(参考)") as text
274else
275  # タイトル headerとタイトル用
276  set strTitleText to ("サンプルコード") as text
277  #サブタイトル article
278  set strSubTitle to ("サンプルコード") as text
279  #キャプション用のテキスト
280  set strCaption to ("サンプルソース(参考)") as text
281end if
282##########################################
283#headerに渡すエレメント
284set ocidSetHeaderElement to (refMe's NSXMLElement's elementWithName:("div"))
285set ocidH3Element to (refMe's NSXMLElement's elementWithName:("h3"))
286##タイトルを入れる
287(ocidH3Element's setStringValue:(strTitleText))
288(ocidSetHeaderElement's addChild:(ocidH3Element))
289
290########################################
291#footerに渡すエレメント
292set ocidSetFooterElement to (refMe's NSXMLElement's elementWithName:("div"))
293set ocidPElement to (refMe's NSXMLElement's elementWithName:("p"))
294set strContents to ("あくまでも参考にしてください") as text
295(ocidPElement's setStringValue:(strContents))
296(ocidSetFooterElement's addChild:(ocidPElement))
297
298(*
299#リンクをつける
300set ocidAElement to (refMe's NSXMLElement's elementWithName:("a"))
301set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("href") stringValue:("https://quicktimer.cocolog-nifty.com/"))
302(ocidAElement's addAttribute:(ocidAddNode))
303set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("target") stringValue:("_blank"))
304(ocidAElement's addAttribute:(ocidAddNode))
305set strContents to ("AppleScriptで生成しました") as text
306(ocidAElement's setStringValue:(strContents))
307(ocidSetFooterElement's addChild:(ocidAElement))
308##
309set ocidButtonElement to (refMe's NSXMLElement's elementWithName:("button"))
310set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("id") stringValue:("closeWindow"))
311(ocidButtonElement's addAttribute:(ocidAddNode))
312set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("class") stringValue:("close-botton"))
313(ocidButtonElement's addAttribute:(ocidAddNode))
314set strContents to ("ウィンドウを閉じる") as text
315(ocidButtonElement's setStringValue:(strContents))
316(ocidSetFooterElement's addChild:(ocidButtonElement))
317#
318set ocidScriptElement to (refMe's NSXMLElement's elementWithName:("script"))
319(ocidScriptElement's setStringValue:("document.getElementById(\"closeWindow\").addEventListener(\"click\", function() {window.close();});"))
320(ocidSetFooterElement's addChild:(ocidScriptElement))
321*)
322
323########################################
324#articleに渡すエレメント
325set ocidSetArticleElement to (refMe's NSXMLElement's elementWithName:("div"))
326set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("class") stringValue:("source-table-outer"))
327(ocidSetArticleElement's addAttribute:(ocidAddNode))
328
329set ocidH5Element to (refMe's NSXMLElement's elementWithName:("h5"))
330(ocidH5Element's setStringValue:(strSubTitle))
331(ocidSetArticleElement's addChild:(ocidH5Element))
332#
333set ocidPElement to (refMe's NSXMLElement's elementWithName:("p"))
334(ocidPElement's setStringValue:("ボタン置換用のPタグ"))
335(ocidSetArticleElement's addChild:(ocidPElement))
336
337
338########################################
339#テーブル部生成開始
340set ocidTableElement to (refMe's NSXMLElement's elementWithName:("table"))
341set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("class") stringValue:("source-table"))
342(ocidTableElement's addAttribute:(ocidAddNode))
343########################################
344#【caption】
345set ocidCaptionElement to (refMe's NSXMLElement's elementWithName:("caption"))
346(ocidCaptionElement's setStringValue:(strCaption))
347(ocidTableElement's addChild:(ocidCaptionElement))
348#######################
349#【colgroup】
350set ocidColgroupElement to (refMe's NSXMLElement's elementWithName:("colgroup"))
351#######################
352#【col】col生成
353#項目番号
354set ocidAddElement to (refMe's NSXMLElement's elementWithName:("col"))
355set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("LineNo"))
356(ocidAddElement's addAttribute:(ocidAddNode))
357(ocidColgroupElement's addChild:(ocidAddElement))
358#値
359set ocidAddElement to (refMe's NSXMLElement's elementWithName:("col"))
360set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("Source"))
361(ocidAddElement's addAttribute:(ocidAddNode))
362(ocidColgroupElement's addChild:(ocidAddElement))
363#テーブルエレメントに追加
364(ocidTableElement's addChild:(ocidColgroupElement))
365########################################
366#【thead】
367set ocidTheadElement to (refMe's NSXMLElement's elementWithName:("thead"))
368set ocidTrElement to (refMe's NSXMLElement's elementWithName:("tr"))
369#項目番号
370set ocidAddElement to (refMe's NSXMLElement's elementWithName:("th"))
371set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("lineNo"))
372(ocidAddElement's addAttribute:(ocidAddNode))
373set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("class") stringValue:("lineNo"))
374(ocidAddElement's addAttribute:(ocidAddNode))
375set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("col"))
376(ocidAddElement's addAttribute:(ocidAddNode))
377(ocidAddElement's setStringValue:("行番号"))
378(ocidTrElement's addChild:(ocidAddElement))
379#値
380set ocidAddElement to (refMe's NSXMLElement's elementWithName:("th"))
381set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("Source"))
382(ocidAddElement's addAttribute:(ocidAddNode))
383set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("class") stringValue:("Source"))
384(ocidAddElement's addAttribute:(ocidAddNode))
385set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("col"))
386(ocidAddElement's addAttribute:(ocidAddNode))
387(ocidAddElement's setStringValue:("ソース"))
388(ocidTrElement's addChild:(ocidAddElement))
389#TRをTHEADにセット
390(ocidTheadElement's addChild:(ocidTrElement))
391#THEADをテーブルにセット
392(ocidTableElement's addChild:(ocidTheadElement))
393########################################
394#【tbody】
395set ocidTbodyElement to (refMe's NSXMLElement's elementWithName:("tbody"))
396#行番号初期化
397set numLineNo to 1 as integer
398#HTMLのソースの数だけ繰り返し
399repeat with itemArray in ocidHTMLArray
400  #行番号を3桁ゼロサプレス
401  set ocidFormatter to refMe's NSNumberFormatter's alloc()'s init()
402  (ocidFormatter's setMinimumIntegerDigits:(3))
403  (ocidFormatter's setMaximumIntegerDigits:(3))
404  set strLineNo to (ocidFormatter's stringFromNumber:(numLineNo)) as text
405  #TRの開始
406  set ocidTrElement to (refMe's NSXMLElement's elementWithName:("tr"))
407  ####項番処理
408  set ocidThElement to (refMe's NSXMLElement's elementWithName:("th"))
409  set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("項目番号 : " & strLineNo))
410  (ocidThElement's addAttribute:(ocidAddNode))
411  set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("headers") stringValue:("lineNo"))
412  (ocidThElement's addAttribute:(ocidAddNode))
413  set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("row"))
414  (ocidThElement's addAttribute:(ocidAddNode))
415  (ocidThElement's setStringValue:(strLineNo))
416  (ocidTrElement's addChild:(ocidThElement))
417  ####値
418  set ocidTdElement to (refMe's NSXMLElement's elementWithName:("td"))
419  set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("Source"))
420  (ocidTdElement's addAttribute:(ocidAddNode))
421  set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("headers") stringValue:("Source"))
422  (ocidTdElement's addAttribute:(ocidAddNode))
423  # ここで取得したHTMLからspanを挿入していく
424  # 1行に複数のspanがあるのでspan毎に処理する
425  set ocidReplacedStrings to (itemArray's stringByReplacingOccurrencesOfString:("</span><span") withString:("</span>\n<span"))
426  set ocidLineItemArray to (ocidReplacedStrings's componentsSeparatedByCharactersInSet:(ocidCharSet))
427  repeat with itemLine in ocidLineItemArray
428    if (itemLine as text) is "" then
429      log "改行のみの空行"
430    else
431      set listResponse to (refMe's NSXMLElement's alloc()'s initWithXMLString:(itemLine) |error| :(reference))
432      if (item 2 of listResponse) (missing value) then
433        log (item 2 of listResponse)'s localizedDescription() as text
434        log itemArray as text
435        return "HTMLの挿入に失敗しました"
436      else if (item 2 of listResponse) = (missing value) then
437        set ocidInsHTMLElement to (item 1 of listResponse)
438      end if
439      (ocidTdElement's addChild:(ocidInsHTMLElement))
440    end if
441  end repeat
442  (ocidTrElement's addChild:(ocidTdElement))
443  #
444  (ocidTbodyElement's addChild:(ocidTrElement))
445  ####
446  set numLineNo to numLineNo + 1 as integer
447end repeat
448#TBODYをテーブルにセット
449(ocidTableElement's addChild:(ocidTbodyElement))
450#【tfoot】 TRで
451set ocidTfootElement to (refMe's NSXMLElement's elementWithName:("tfoot"))
452set ocidTrElement to (refMe's NSXMLElement's elementWithName:("tr"))
453#colspan指定して1行でセット
454set ocidThElement to (refMe's NSXMLElement's elementWithName:("th"))
455set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("テーブルの終わり"))
456(ocidThElement's addAttribute:(ocidAddNode))
457set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("colspan") stringValue:("2"))
458(ocidThElement's addAttribute:(ocidAddNode))
459set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("row"))
460(ocidThElement's addAttribute:(ocidAddNode))
461#
462#リンクをつける
463set ocidAElement to (refMe's NSXMLElement's elementWithName:("a"))
464set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("href") stringValue:("https://quicktimer.cocolog-nifty.com/icefloe/2025/05/post-a8519b.html"))
465(ocidAElement's addAttribute:(ocidAddNode))
466set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("target") stringValue:("_blank"))
467(ocidAElement's addAttribute:(ocidAddNode))
468set strContents to ("AppleScriptで生成しました") as text
469(ocidAElement's setStringValue:(strContents))
470(ocidThElement's addChild:(ocidAElement))
471#
472#(ocidThElement's setStringValue:("行数 : " & (numLineNo - 1) & ""))
473#THをTRにセットして
474(ocidTrElement's addChild:(ocidThElement))
475#TRをTFOOTにセット
476(ocidTfootElement's addChild:(ocidTrElement))
477#TFOOTをテーブルにセット
478(ocidTableElement's addChild:(ocidTfootElement))
479#テーブルをアーティクルにセット
480(ocidSetArticleElement's addChild:(ocidTableElement))
481
482##########################################
483#テキストファイルを生成する
484##########################################
485#テキストにして
486set ocidTableXML to ocidSetArticleElement's XMLString()
487#必要に応じて置換
488set ocidReplacedStrings to (ocidTableXML's stringByReplacingOccurrencesOfString:("  ") withString:("  "))
489
490#set ocidReplacedStrings to (ocidReplacedStrings's stringByReplacingOccurrencesOfString:("#!/usr/bin/env osascript") withString:("#!/usr/bin/env osascript"))
491#set ocidReplacedStrings to (ocidReplacedStrings's stringByReplacingOccurrencesOfString:("#!/bin/bash") withString:("#!/bin/bash"))
492set ocidReplacedStrings to (ocidReplacedStrings's stringByReplacingOccurrencesOfString:("AppKit") withString:("AppKit"))
493set ocidReplacedStrings to (ocidReplacedStrings's stringByReplacingOccurrencesOfString:("  ") withString:("&#160;&#160;"))
494set ocidReplacedStrings to (ocidReplacedStrings's stringByReplacingOccurrencesOfString:("> </span>") withString:(">&#160;</span>"))
495set ocidTableHTML to (ocidReplacedStrings's stringByReplacingOccurrencesOfString:("<p>ボタン置換用のPタグ</p>") withString:(strLinkBotton))
496
497(*
498set ocidSaveXMLStrings to doRegrExReplace(ocidTableXML, "  ", "  ")
499set ocidSaveXMLStrings to doRegrExReplace(ocidSaveXMLStrings, "#!/usr/bin/env osascript", "#!/usr/bin/env osascript")
500set ocidSaveXMLStrings to doRegrExReplace(ocidSaveXMLStrings, "#!/bin/bash", "#!/bin/bash")
501set ocidSaveXMLStrings to doRegrExReplace(ocidSaveXMLStrings, "AppKit", "AppKit")
502set ocidSaveXMLStrings to doRegrExReplace(ocidSaveXMLStrings, "  ", "&#160;&#160;")
503set ocidSaveXMLStrings to doRegrExReplace(ocidSaveXMLStrings, "> </span>", ">&#160;</span>")
504set ocidTableHTML to doRegrExReplace(ocidSaveXMLStrings, "<p>ボタン置換用のPタグ</p>", strLinkBotton)
505
506*)
507
508#CSS取得
509set strCSS to doGetTextCss() as text
510set strStyle to ("<style>" & strCSS & strCopyBottonCSS & "</style>") as text
511#出力用テキスト
512set ocidSaveTextStrings to refMe's NSMutableString's alloc()'s initWithCapacity:(0)
513#
514if boolOsa is true then
515  ocidSaveTextStrings's appendString:(strScptFileName)
516else
517  ocidSaveTextStrings's appendString:(strFileName)
518end if
519#
520ocidSaveTextStrings's appendString:("<br />")
521ocidSaveTextStrings's appendString:("<hr>")
522ocidSaveTextStrings's appendString:(strStyle)
523ocidSaveTextStrings's appendString:(ocidTableHTML)
524ocidSaveTextStrings's appendString:("<hr>")
525
526#######################
527#テキストファイル保存
528set listDone to ocidSaveTextStrings's writeToURL:(ocidTextFilePathURL) atomically:false encoding:(refMe's NSUTF8StringEncoding) |error| :(reference)
529if (item 2 of listDone) (missing value) then
530  log (item 2 of listDone)'s localizedDescription() as text
531  return "HTMLの保存に失敗しまし"
532else if (item 2 of listDone) = (missing value) then
533  log "HTMLファイルを保存しました"
534end if
535
536
537##########################################
538#HTMLファイルを生成する
539##########################################
540set ocidHTML to doMakeRootElement({ocidSetHeaderElement, ocidSetArticleElement, ocidSetFooterElement, strTitleText})
541set ocidXMLString to ocidHTML's XMLString()
542set ocidSaveXMLStrings to doRegrExReplace(ocidXMLString, "  ", "  ")
543#set ocidSaveXMLStrings to doRegrExReplace(ocidSaveXMLStrings, "#!/usr/bin/env osascript", "#!/usr/bin/env osascript")
544#set ocidSaveXMLStrings to doRegrExReplace(ocidSaveXMLStrings, "#!/bin/bash", "#!/bin/bash")
545set ocidSaveXMLStrings to doRegrExReplace(ocidSaveXMLStrings, "AppKit", "AppKit")
546set ocidSaveXMLStrings to doRegrExReplace(ocidSaveXMLStrings, "  ", "&nbsp;&nbsp;")
547set ocidSaveXMLStrings to doRegrExReplace(ocidSaveXMLStrings, "> </span>", ">&nbsp;</span>")
548set ocidSaveXMLStrings to doRegrExReplace(ocidSaveXMLStrings, "<p>ボタン置換用のPタグ</p>", strLinkBotton)
549set strRepText to (strCopyBottonCSS & "</style>") as text
550set ocidSaveXMLStrings to doRegrExReplace(ocidSaveXMLStrings, "</style>", strRepText)
551
552
553set listDone to ocidSaveXMLStrings's writeToURL:(ocidHTMLFilePathURL) atomically:true encoding:(refMe's NSUTF8StringEncoding) |error| :(reference)
554if (item 2 of listDone) (missing value) then
555  log (item 2 of listDone)'s localizedDescription() as text
556  return "HTMLの保存に失敗しまし"
557else if (item 2 of listDone) = (missing value) then
558  log "HTMLファイルを保存しました"
559end if
560##########################################
561####保存先を開く
562##########################################
563set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace()
564set boolDone to appSharedWorkspace's openURL:(ocidSaveDirPathURL)
565if (boolDone) is (true) then
566  log "正常終了" as text
567  #   return "正常終了"
568else if (boolDone) is (false) then
569  return "ファイルの保存先を開けません"
570end if
571
572##########################################
573####テキストファイルを後で開くようにした
574##########################################
575
576set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace()
577set boolDone to appSharedWorkspace's openURL:(ocidTextFilePathURL)
578if (boolDone) is (true) then
579  log "テキストファイル正常終了" as text
580  return "テキストファイル正常終了"
581else if (boolDone) is (false) then
582  return "ファイルの保存先を開けません"
583end if
584
585return
586
587##########################################
588####CSS部分
589##########################################
590to doGetTextCss()
591  set strCSS to ("@font-face {font-family: 'OsakaMonoLocal';src: url('file:///System/Library/AssetsV2/com_apple_MobileAsset_Font7/0818d874bf1d0e24a1fe62e79f407717792c5ee1.asset/AssetData/OsakaMono.ttf') format('truetype');}div.source-table-outer {margin: 5px;padding: 10px;background-color: #1e1e1e;color: #679AD1;max-width: 680px;}div.source-table-outer h5 {display: none;visibility: hidden;-webkit-user-select: none;user-select: none;}table.source-table {border-spacing: 0;caption-side: top;color: #679AD1;font-family: OsakaMonoLocal, Osaka-Mono, Menlo, Monaco, 'Courier New',monospace;}table.source-table caption {display: none;visibility: hidden;}table.source-table thead th {border: solid 1px #666666;padding: .5ch 1ch;border-block-width: 1px 1px;border-inline-width: 1px 0;-webkit-user-select: none;user-select: none;font-weight: normal;font-size: 10pt;&:first-of-type {border-start-start-radius: .5em}&:last-of-type {border-start-end-radius: .5em;border-inline-end-width: 1px}}table.source-table tbody th {border-spacing: 0;border-top: none;border-bottom: solid 1px #666666;border-left: solid 1px #666666;border-right: solid 1px #666666;padding: .5ch 1ch;font-weight: normal;border-block-width: 1px 0;border-inline-width: 1px 0;-webkit-user-select: none;user-select: none;font-size: 10pt;}table.source-table tbody td {max-width: 580px;word-wrap: break-word;border-spacing: 0;border-top: none;border-bottom: solid 1px #666666;border-left: solid 1px #666666;border-right: solid 1px #666666;padding-left: .5ch;padding-right: 1ch;border-block-width: 1px 0;border-inline-width: 1px 0;&:last-of-type {border-inline-end-width: 1px}}table.source-table tbody td span {font-size: 12pt;line-height: 12.5pt;}table.source-table tbody tr:nth-of-type(odd) {background-color: #2e2e2e;}.kind_string {font-size: 0.75em;}.date_string {font-size: 0.5em;}table.source-table tfoot th {border: solid 1px #666666;padding: .5ch 1ch;-webkit-user-select: none;user-select: none;font-weight: normal;&:first-of-type {border-end-start-radius: .5em}&:last-of-type {border-end-end-radius: .5em;border-inline-end-width: 1px}}table.source-table tfoot th a {color: #679AD1;}a.open-script-editor {color: #679AD1;-webkit-user-select: none;user-select: none;}#buttonCopy387 {background-color: #569cd6;border: none;color: white;padding: 15px32px;text-align: center;text-decoration: none;display: inline-block;font-size: 16px;margin: 4px2px;cursor: pointer;border-radius: 10px;-webkit-user-select: none;user-select: none;}") as text
592  #
593  return strCSS
594end doGetTextCss
595
596##########################################
597####CSS部分
598##########################################
599
600to doGetAppendCss()
601  set strCSS to ("body {margin: 10px;background-color: #1e1e1e;font-family: OsakaMonoLocal, Osaka-Mono, Menlo, Monaco, 'Courier New' ,monospace;font-weight: 400;font-size: 12pt;color: #679AD1;}header {font-family: OsakaMonoLocal, Osaka-Mono, Menlo, Monaco, 'Courier New', monospace, Menlo, Monaco, 'Courier New', monospace;-webkit-user-select: none;user-select: none;}article {font-family: OsakaMonoLocal, Osaka-Mono, Menlo, Monaco, 'Courier New', monospace, Menlo, Monaco, 'Courier New', monospace;}footer {font-family: OsakaMonoLocal, Osaka-Mono, Menlo, Monaco, 'Courier New', monospace, Menlo, Monaco, 'Courier New', monospace;-webkit-user-select: none;user-select: none;}footer a {color: #679AD1;}#closeWindow {background-color: #569cd6;border: none;color: white;padding: 15px32px;text-align: center;text-decoration: none;display: inline-block;font-size: 16px;margin: 4px2px;cursor: pointer;border-radius: 10px;-webkit-user-select: none;user-select: none;}") as text
602  return strCSS
603end doGetAppendCss
604
605##########################################
606####HTMLの置換 正規表現
607##########################################
608to doRegrExReplace(argText, argReplaceString, argWithString)
609  set ocidReturnText to refMe's NSMutableString's alloc()'s initWithCapacity:0
610  ocidReturnText's setString:(argText)
611  ###レンンジを取って(元データの元データのレンジ=最初から最後まで)
612  set ocidArgTextRange to ocidReturnText's rangeOfString:(ocidReturnText)
613  ###置換
614  ocidReturnText's replaceOccurrencesOfString:(argReplaceString) withString:(argWithString) options:(refMe's NSRegularExpressionSearch) range:(ocidArgTextRange)
615  return ocidReturnText
616end doRegrExReplace
617
618
619##########################################
620####日付情報の取得
621##########################################
622to doGetDateNo(strDateFormat)
623  ####日付情報の取得
624  set ocidDate to refMe's NSDate's |date|()
625  ###日付のフォーマットを定義
626  set ocidNSDateFormatter to refMe's NSDateFormatter's alloc()'s init()
627  ocidNSDateFormatter's setLocale:(refMe's NSLocale's localeWithLocaleIdentifier:"en_US")
628  ocidNSDateFormatter's setDateFormat:strDateFormat
629  set ocidDateAndTime to ocidNSDateFormatter's stringFromDate:ocidDate
630  set strDateAndTime to ocidDateAndTime as text
631  return strDateAndTime
632end doGetDateNo
633
634
635
636
637############################################################
638# 基本的なHTMLの構造
639(*
640doMakeRootElement({argHeaderContents, argArticleContents, argFooterContents,argTitleText})
641HTMLのBODY部
642header
643article
644footerにそれぞれAddchildするデータをリストで渡す
645戻り値はRootエレメントにセットされた
646NSXMLDocumentを戻すので 保存すればOK
647*)
648############################################################
649to doMakeRootElement({argHeaderContents, argArticleContents, argFooterContents, argTitleText})
650  #XML初期化
651  set ocidXMLDoc to refMe's NSXMLDocument's alloc()'s init()
652  ocidXMLDoc's setDocumentContentKind:(refMe's NSXMLDocumentHTMLKind)
653  # DTD付与
654  set ocidDTD to refMe's NSXMLDTD's alloc()'s init()
655  ocidDTD's setName:("html")
656  ocidXMLDoc's setDTD:(ocidDTD)
657  #
658  set ocidRootElement to refMe's NSXMLElement's elementWithName:("html")
659  set ocidAddNode to refMe's NSXMLNode's attributeWithName:("lang") stringValue:("ja")
660  ocidRootElement's addAttribute:(ocidAddNode)
661  #
662  set ocidHeadElement to refMe's NSXMLElement's elementWithName:("head")
663  #
664  set ocidAddElement to refMe's NSXMLElement's elementWithName:("title")
665  ocidAddElement's setStringValue:(argTitleText)
666  ocidHeadElement's addChild:(ocidAddElement)
667  # http-equiv
668  set ocidAddElement to refMe's NSXMLElement's elementWithName:("meta")
669  set ocidAddNode to refMe's NSXMLNode's attributeWithName:("http-equiv") stringValue:("Content-Type")
670  ocidAddElement's addAttribute:(ocidAddNode)
671  set ocidAddNode to refMe's NSXMLNode's attributeWithName:("content") stringValue:("text/html; charset=UTF-8")
672  ocidAddElement's addAttribute:(ocidAddNode)
673  ocidHeadElement's addChild:(ocidAddElement)
674  #
675  (*
676  set ocidAddElement to refMe's NSXMLElement's elementWithName:("meta")
677  set ocidAddNode to refMe's NSXMLNode's attributeWithName:("http-equiv") stringValue:("Content-Style-Type")
678  ocidAddElement's addAttribute:(ocidAddNode)
679  set ocidAddNode to refMe's NSXMLNode's attributeWithName:("content") stringValue:("text/css")
680  ocidAddElement's addAttribute:(ocidAddNode)
681  ocidHeadElement's addChild:(ocidAddElement)
682  #
683  set ocidAddElement to refMe's NSXMLElement's elementWithName:("meta")
684  set ocidAddNode to refMe's NSXMLNode's attributeWithName:("http-equiv") stringValue:("Content-Script-Type")
685  ocidAddElement's addAttribute:(ocidAddNode)
686  set ocidAddNode to refMe's NSXMLNode's attributeWithName:("content") stringValue:("text/javascript")
687  ocidAddElement's addAttribute:(ocidAddNode)
688  ocidHeadElement's addChild:(ocidAddElement)
689  *)
690  #
691  set ocidAddElement to refMe's NSXMLElement's elementWithName:("meta")
692  set ocidAddNode to refMe's NSXMLNode's attributeWithName:("name") stringValue:("viewport")
693  ocidAddElement's addAttribute:(ocidAddNode)
694  set ocidAddNode to refMe's NSXMLNode's attributeWithName:("content") stringValue:("width=740")
695  ocidAddElement's addAttribute:(ocidAddNode)
696  ocidHeadElement's addChild:(ocidAddElement)
697  #
698  set strCSS to doGetTextCss()
699  set strAppendCss to doGetAppendCss()
700  set strSetCSS to (strAppendCss & strCSS) as text
701  set ocidAddElement to refMe's NSXMLElement's elementWithName:("style")
702  ocidAddElement's setStringValue:(strSetCSS)
703  ocidHeadElement's addChild:(ocidAddElement)
704  ocidRootElement's addChild:(ocidHeadElement)
705  #
706  #ボディエレメント
707  set ocidBodyElement to refMe's NSXMLElement's elementWithName:("body")
708  #ヘッダー
709  set ocidHeaderElement to refMe's NSXMLElement's elementWithName:("header")
710  set ocidAddNode to refMe's NSXMLNode's attributeWithName:("id") stringValue:("header")
711  ocidHeaderElement's addAttribute:(ocidAddNode)
712  set ocidAddNode to refMe's NSXMLNode's attributeWithName:("class") stringValue:("body_header")
713  ocidHeaderElement's addAttribute:(ocidAddNode)
714  ocidHeaderElement's addChild:(argHeaderContents)
715  ocidBodyElement's addChild:(ocidHeaderElement)
716  #アーティクル
717  set ocidArticleElement to refMe's NSXMLElement's elementWithName:("article")
718  set ocidAddNode to refMe's NSXMLNode's attributeWithName:("id") stringValue:("article")
719  ocidArticleElement's addAttribute:(ocidAddNode)
720  set ocidAddNode to refMe's NSXMLNode's attributeWithName:("class") stringValue:("body_article")
721  ocidArticleElement's addAttribute:(ocidAddNode)
722  ocidArticleElement's addChild:(argArticleContents)
723  ocidBodyElement's addChild:(ocidArticleElement)
724  #フッター
725  set ocidFooterElement to refMe's NSXMLElement's elementWithName:("footer")
726  set ocidAddNode to refMe's NSXMLNode's attributeWithName:("id") stringValue:("footer")
727  ocidFooterElement's addAttribute:(ocidAddNode)
728  set ocidAddNode to refMe's NSXMLNode's attributeWithName:("class") stringValue:("body_footer")
729  ocidFooterElement's addAttribute:(ocidAddNode)
730  ocidFooterElement's addChild:(argFooterContents)
731  ocidBodyElement's addChild:(ocidFooterElement)
732  #ボディをROOTエレメントにセット
733  ocidRootElement's addChild:(ocidBodyElement)
734  #ROOTをXMLにセット
735  ocidXMLDoc's setRootElement:(ocidRootElement)
736  #値を戻す
737  return ocidXMLDoc
738end doMakeRootElement
739
AppleScriptで生成しました

| | コメント (0)

Visual Studio Code 1.100.0

202505091150451_255x158

MacArm
https://update.code.visualstudio.com/1.100.0/darwin-arm64/stable
https://vscode.download.prss.microsoft.com/dbazure/download/stable/19e0f9e681ecb8e5c09d8784acaa601316ca4571/VSCode-darwin-arm64.zip

MacInt
https://update.code.visualstudio.com/1.100.0/darwin/stable
https://vscode.download.prss.microsoft.com/dbazure/download/stable/19e0f9e681ecb8e5c09d8784acaa601316ca4571/VSCode-darwin.zip


MacUni
https://update.code.visualstudio.com/1.100.0/darwin-universal/stable
https://vscode.download.prss.microsoft.com/dbazure/download/stable/19e0f9e681ecb8e5c09d8784acaa601316ca4571/VSCode-darwin-universal.zip


Win64
https://update.code.visualstudio.com/1.100.0/win32-x64-user/stable
https://vscode.download.prss.microsoft.com/dbazure/download/stable/19e0f9e681ecb8e5c09d8784acaa601316ca4571/VSCodeUserSetup-x64-1.100.0.exe


WinArm
https://update.code.visualstudio.com/1.100.0/win32-arm64-user/stable
https://vscode.download.prss.microsoft.com/dbazure/download/stable/19e0f9e681ecb8e5c09d8784acaa601316ca4571/VSCodeUserSetup-arm64-1.100.0.exe


| | コメント (0)

[com.microsoft.VSCode]AppleScriptでVSCodeの最新版のURLをしゅとくする(Windows版のURLも取得)


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

バージョンチェッカー.applescript
ソース
001#!/usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003(* 
004 VS CODEのバージョンチェッカ v3
005 アプリのバージョン取得をバンドルとPLISTの2種類参照するようにした
006
007v1.2 リダイレクト先のURLも取得するようにした
008
009com.cocolog-nifty.quicktimer.icefloe *)
010#
011----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
012use AppleScript version "2.8"
013use framework "Foundation"
014use framework "UniformTypeIdentifiers"
015use framework "AppKit"
016use scripting additions
017property refMe : a reference to current application
018
019###アプリケーションのバンドルID
020set strBundleID to ("com.microsoft.VSCode") as text
021
022set strURL to "https://code.visualstudio.com/updates/" as text
023
024set coidBaseURLStr to refMe's NSString's stringWithString:(strURL)
025set ocidBaseURL to refMe's NSURL's URLWithString:(coidBaseURLStr)
026
027################################################
028###### URLRequest部分
029################################################
030set ocidURLRequest to refMe's NSMutableURLRequest's alloc()'s init()
031ocidURLRequest's setHTTPMethod:"GET"
032ocidURLRequest's setURL:(ocidBaseURL)
033ocidURLRequest's addValue:"application/xml" forHTTPHeaderField:"Content-Type"
034###ポストするデータは空
035ocidURLRequest's setHTTPBody:(missing value)
036
037################################################
038###### データ取得
039################################################
040#NSURLConnection
041set ocidServerResponse to refMe's NSURLConnection's sendSynchronousRequest:(ocidURLRequest) returningResponse:(missing value) |error|:(reference)
042set ocidXMLData to (item 1 of ocidServerResponse)
043#NSXMLDocument
044set ocidOption to (refMe's NSXMLDocumentTidyHTML)
045set listXMLDoc to refMe's NSXMLDocument's alloc()'s initWithData:(ocidXMLData) options:(ocidOption) |error|:(reference)
046
047set ocidXMLDoc to item 1 of listXMLDoc
048set ocidRootElement to ocidXMLDoc's rootElement()
049#HTML見る場合はここで
050#log ocidRootElement's XMLString()'s stringValue() as text
051################################################
052###### HTML解析
053################################################
054#nodesForXPath
055set listResponse to (ocidXMLDoc's nodesForXPath:("//body/div[@id='main']//div/p/a/attribute::href") |error|:(reference))
056set ocidAelementArray to (item 1 of listResponse)
057#収集したURLを順番に
058set ocidURLstring to (missing value)
059repeat with itemAelement in ocidAelementArray
060   set ocidItemURLstring to itemAelement's stringValue()
061   set boolContaint to (ocidItemURLstring's containsString:("update.code.visualstudio.com"))
062   if boolContaint is true then
063      set ocidURLstring to ocidItemURLstring
064      exit repeat
065   end if
066end repeat
067
068set ocidURL to refMe's NSURL's alloc()'s initWithString:(ocidURLstring)
069set ocidOSURL to ocidURL's URLByDeletingLastPathComponent()
070set ocidVerURL to ocidOSURL's URLByDeletingLastPathComponent()
071set ocidVerNo to ocidVerURL's lastPathComponent()'s stringValue()
072
073################################################
074###### インストール済みバージョン
075################################################
076#URL
077set ocidAppPathURL to doGetAppPathURL(strBundleID)
078set ocidAppBundle to (refMe's NSBundle's alloc()'s initWithURL:(ocidAppPathURL))
079#バンドルからの取得のバージョン
080set ocidShortVer to (ocidAppBundle's objectForInfoDictionaryKey:("CFBundleShortVersionString"))
081#PLISTから取得のバージョン
082set ocidPlistFilePathURL to ocidAppPathURL's URLByAppendingPathComponent:("Contents/Info.plist") isDirectory:(false)
083set listResponse to refMe's NSDictionary's alloc()'s initWithContentsOfURL:(ocidPlistFilePathURL) |error|:(reference)
084set ocidInfoDict to (item 1 of listResponse)
085set ocidVer to (ocidInfoDict's valueForKey:("CFBundleVersion"))
086#
087log ocidVer as text
088log ocidShortVer as text
089log ocidVerNo as text
090#
091set boolSame to ocidVerNo's isEqualToString:(ocidShortVer)
092if boolSame is false then
093   set boolSame to ocidVerNo's isEqualToString:(ocidVer)
094   if boolSame is false then
095      log "アップデートがあります"
096   else
097      #   display alert "最新版を利用しています" buttons {"終了"} default button "終了" cancel button "終了" as informational giving up after 3
098      #   return "最新版を利用しています"
099   end if
100else
101   #   display alert "最新版を利用しています" buttons {"終了"} default button "終了" cancel button "終了" as informational giving up after 3
102   #   return "最新版を利用しています"
103end if
104
105
106################################################
107###### URL解析
108################################################
109#
110set recordPATH to {|Win64|:"win32-x64-user/stable", |WinArm|:"win32-arm64-user/stable", |MacArm|:"darwin-arm64/stable", |MacUni|:"darwin-universal/stable", |MacInt|:"darwin/stable"} as record
111#
112set ocidPathDict to refMe's NSMutableDictionary's alloc()'s init()
113ocidPathDict's setDictionary:(recordPATH)
114set ocidAllKeys to ocidPathDict's allKeys()
115set ocidAllKeys to ocidAllKeys's sortedArrayUsingSelector:("localizedStandardCompare:")
116#
117set ocidOutPuttring to refMe's NSMutableString's alloc()'s init()
118ocidOutPuttring's appendString:("")
119#
120repeat with itemKey in ocidAllKeys
121   set ocidPath to (ocidPathDict's valueForKey:(itemKey))
122   set ocidUpdateURL to (ocidVerURL's URLByAppendingPathComponent:(ocidPath))
123   set strUpdateURL to ocidUpdateURL's absoluteString()
124   ##########################
125   #リダイレクト先の取得
126   #リクエスト
127   set appRequest to (refMe's NSMutableURLRequest's requestWithURL:(ocidUpdateURL))
128   #初期設定
129   set ocidConf to (refMe's NSURLSessionConfiguration's defaultSessionConfiguration)
130   #キュー
131   set appQueue to (refMe's NSOperationQueue's mainQueue)
132   #セッション
133   set appSession to (refMe's NSURLSession's sessionWithConfiguration:(ocidConf) delegate:("self") delegateQueue:(appQueue))
134   #タスク
135   #set appTask to appSession's dataTaskWithRequest:(appRequest)
136   set appTask to (appSession's dataTaskWithURL:(ocidUpdateURL) completionHandler:(missing value))
137   #タスク 開始
138   appTask's resume()
139   #最大5秒のループ
140   repeat 5 times
141      #タスクのステータス取得
142      set ocidStatue to appTask's state()
143      log ocidStatue as text
144      #実行中なら
145      if ocidStatue = (refMe's NSURLSessionTaskStateRunning as integer) then
146         #レスポンスの内容を取得して
147         set ocidResponse to appTask's response()
148         #まだ取得できない状態なら
149         if ocidResponse = (missing value) then
150            #1秒待つ
151            delay 1
152         else
153            #レスポンスが取得できたら
154            log ocidResponse's statusCode()
155            #クラスを確認(なければここでエラーになる)
156            log (ocidResponse's isKindOfClass:(refMe's NSHTTPURLResponse's |class|))
157            #リダイレクトされたURLを取得して
158            set ocidRedirectURL to ocidResponse's |URL|
159            exit repeat
160         end if
161      end if
162   end repeat
163   #タスクをキャンセル終了する
164   appTask's cancel()
165   #戻り値
166   set strRedirectURL to ocidRedirectURL's absoluteString() as text
167   
168   
169   (ocidOutPuttring's appendString:(itemKey))
170   (ocidOutPuttring's appendString:("\n"))
171   (ocidOutPuttring's appendString:(strUpdateURL))
172   (ocidOutPuttring's appendString:("\n"))
173   (ocidOutPuttring's appendString:(strRedirectURL))
174   (ocidOutPuttring's appendString:("\n"))
175   (ocidOutPuttring's appendString:("\n\n"))
176end repeat
177
178
179################################################
180###### 表示
181################################################
182set appFileManager to refMe's NSFileManager's defaultManager()
183set ocidTempDirURL to appFileManager's temporaryDirectory()
184set ocidUUID to refMe's NSUUID's alloc()'s init()
185set ocidUUIDString to ocidUUID's UUIDString
186set ocidSaveDirPathURL to ocidTempDirURL's URLByAppendingPathComponent:(ocidUUIDString) isDirectory:(true)
187#
188set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s init()
189ocidAttrDict's setValue:(511) forKey:(refMe's NSFilePosixPermissions)
190set listBoolMakeDir to appFileManager's createDirectoryAtURL:(ocidSaveDirPathURL) withIntermediateDirectories:(true) attributes:(ocidAttrDict) |error|:(reference)
191###パス
192set strFileName to "index.txt" as text
193set ocidSaveFilePathURL to ocidSaveDirPathURL's URLByAppendingPathComponent:(strFileName) isDirectory:false
194#保存
195set listDone to ocidOutPuttring's writeToURL:(ocidSaveFilePathURL) atomically:(true) encoding:(refMe's NSUTF8StringEncoding) |error|:(reference)
196if (item 1 of listDone) is true then
197   log "正常終了"
198else if (item 1 of listDone) is false then
199   log (item 2 of listDone)'s localizedDescription() as text
200   return "保存に失敗しました"
201end if
202##表示
203set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace()
204set boolDone to appSharedWorkspace's openURL:(ocidSaveFilePathURL)
205
206
207
208
209################################################
210#バンドルIDからアプリケーションのパスURL
211################################################
212
213to doGetAppPathURL(argBundleID)
214   ###ワークスペース初期化
215   set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace()
216   set ocidAppBundle to (refMe's NSBundle's bundleWithIdentifier:(argBundleID))
217   if ocidAppBundle ≠ (missing value) then
218      set ocidAppPathURL to ocidAppBundle's bundleURL()
219   else if ocidAppBundle = (missing value) then
220      set ocidAppPathURL to (appSharedWorkspace's URLForApplicationWithBundleIdentifier:(argBundleID))
221   end if
222   if ocidAppPathURL = (missing value) then
223      tell application "Finder"
224         try
225            set aliasAppApth to (application file id argBundleID) as alias
226         on error
227            return "アプリケーションが見つかりませんでした"
228         end try
229      end tell
230      set strAppPath to POSIX path of aliasAppApth as text
231      set strAppPathStr to refMe's NSString's stringWithString:(strAppPath)
232      set strAppPath to strAppPathStr's stringByStandardizingPath()
233      set ocidAppPathURL to refMe's NSURL's alloc()'s initFileURLWithPath:(ocidFilePath) isDirectory:true
234   end if
235   return ocidAppPathURL
236end doGetAppPathURL
AppleScriptで生成しました

| | コメント (0)

[com.microsoft.VSCode]AppleScriptで最新版をダウンロードして解凍まで


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

com.microsoft.VSCodeアップデート.applescript
ソース
001#!/usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003(* 
004VS CODEのアップデートスクリプト
005ARM版をダウンロードする
006
007v1 初回作成
008v2 Dockの処理を追加
009処理開始時にDOCKの内容を取得して
010処理終了時に戻すので、DOCKの同じ位置に登録状態が戻るようにした
011
012com.cocolog-nifty.quicktimer.icefloe *)
013#
014----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
015use AppleScript version "2.8"
016use framework "Foundation"
017use framework "UniformTypeIdentifiers"
018use framework "AppKit"
019use scripting additions
020property refMe : a reference to current application
021
022###アプリケーションのバンドルID
023set strBundleID to ("com.microsoft.VSCode") as text
024
025set strURL to "https://go.microsoft.com/fwlink/?linkid=2156837" as text
026
027
028################################################
029#処理開始前にDOCKの内容を取得
030set appFileManager to refMe's NSFileManager's defaultManager()
031set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSLibraryDirectory) inDomains:(refMe's NSUserDomainMask))
032set ocidLibraryDirPathURL to ocidURLsArray's firstObject()
033set ocidPlistFilePathURL to ocidLibraryDirPathURL's URLByAppendingPathComponent:("Preferences/com.apple.dock.plist") isDirectory:(true)
034#NSDATA
035set ocidOption to (refMe's NSDataReadingMappedIfSafe)
036set listResponse to refMe's NSData's alloc()'s initWithContentsOfURL:(ocidPlistFilePathURL) options:(ocidOption) |error|:(reference)
037set ocidPlistData to (item 1 of listResponse)
038
039################################################
040#URLとファイルパス
041set ocidURLString to refMe's NSString's stringWithString:(strURL)
042set ocidURL to refMe's NSURL's alloc()'s initWithString:(ocidURLString)
043#リダイレクト先を取得
044#リクエスト
045set appRequest to refMe's NSMutableURLRequest's requestWithURL:(ocidURL)
046appRequest's setHTTPMethod:("GET")
047appRequest's setTimeoutInterval:(1)
048#セッション
049set ocidConf to refMe's NSURLSessionConfiguration's defaultSessionConfiguration()
050set appQueue to refMe's NSOperationQueue's mainQueue()
051set appSession to refMe's NSURLSession's sessionWithConfiguration:(ocidConf) delegate:("self") delegateQueue:(appQueue)
052#簡易にこの記述でもいい
053#set appSession to refMe's NSURLSession's sharedSession()
054#タスク
055set appTask to appSession's dataTaskWithRequest:(appRequest)
056#タスクスタート
057appTask's resume()
058set ocidRedirectURL to (missing value)
059repeat 20 times
060   set ocidStatue to appTask's response()
061   #   log ocidStatue
062   if ocidStatue = (missing value) then
063      delay 0.2
064   else
065      set ocidStatue to appTask's response()
066      set ocidRedirectURL to ocidStatue's |URL|()
067      set ocidUniURL to ocidRedirectURL's absoluteString()
068      exit repeat
069   end if
070end repeat
071#タスク終了
072appTask's cancel()
073if ocidRedirectURL = (missing value) then
074   return "リダイレクトに失敗しています"
075end if
076################################################
077#
078log ocidUniURL as text
079set ocidArmURL to (ocidUniURL's stringByReplacingOccurrencesOfString:("VSCode-darwin-universal") withString:("VSCode-darwin-arm64"))
080log ocidArmURL as text
081set ocidArmURL to refMe's NSURL's alloc()'s initWithString:(ocidArmURL)
082set ocidZipFileName to ocidArmURL's lastPathComponent()
083#テンポラリにダウンロード
084set appFileManager to refMe's NSFileManager's defaultManager()
085set ocidTempDirURL to appFileManager's temporaryDirectory()
086set ocidUUID to refMe's NSUUID's alloc()'s init()
087set ocidUUIDString to ocidUUID's UUIDString
088set ocidSaveDirPathURL to ocidTempDirURL's URLByAppendingPathComponent:(ocidUUIDString) isDirectory:(true)
089#パス
090set ocidSaveFilePathURL to ocidSaveDirPathURL's URLByAppendingPathComponent:(ocidZipFileName) isDirectory:(false)
091set strSaveFilePath to ocidSaveFilePathURL's |path|() as text
092#
093set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSApplicationDirectory) inDomains:(refMe's NSUserDomainMask))
094set ocidApplicationDirPathURL to ocidURLsArray's firstObject()
095set ocidDistDirPathURL to ocidApplicationDirPathURL's URLByAppendingPathComponent:("Documents") isDirectory:(true)
096set strDistDirPath to ocidDistDirPathURL's |path|() as text
097set ocidDistAppPathURL to ocidDistDirPathURL's URLByAppendingPathComponent:("Visual Studio Code.app") isDirectory:(true)
098#
099set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s init()
100ocidAttrDict's setValue:(511) forKey:(refMe's NSFilePosixPermissions)
101set listDone to appFileManager's createDirectoryAtURL:(ocidSaveDirPathURL) withIntermediateDirectories:(true) attributes:(ocidAttrDict) |error|:(reference)
102#
103ocidAttrDict's setValue:(448) forKey:(refMe's NSFilePosixPermissions)
104set listDone to appFileManager's createDirectoryAtURL:(ocidDistDirPathURL) withIntermediateDirectories:(true) attributes:(ocidAttrDict) |error|:(reference)
105
106
107################################################
108#NSDATA
109set ocidOption to (refMe's NSDataReadingMappedIfSafe)
110set listResponse to refMe's NSData's alloc()'s initWithContentsOfURL:(ocidURL) options:(ocidOption) |error|:(reference)
111if (item 2 of listResponse) = (missing value) then
112   log "initWithContentsOfURL 正常処理"
113   set ocidReadData to (item 1 of listResponse)
114else if (item 2 of listResponse) ≠ (missing value) then
115   set strErrorNO to (item 2 of listResponse)'s code() as text
116   set strErrorMes to (item 2 of listResponse)'s localizedDescription() as text
117   refMe's NSLog("■" & strErrorNO & strErrorMes)
118   return "initWithContentsOfURL エラーしました" & strErrorNO & strErrorMes
119end if
120##NSDATA
121set ocidOption to (refMe's NSDataWritingAtomic)
122set listDone to ocidReadData's writeToURL:(ocidSaveFilePathURL) options:(ocidOption) |error|:(reference)
123if (item 1 of listDone) is true then
124   log "writeToURL 正常処理"
125else if (item 2 of listDone) ≠ (missing value) then
126   set strErrorNO to (item 2 of listDone)'s code() as text
127   set strErrorMes to (item 2 of listDone)'s localizedDescription() as text
128   refMe's NSLog("■" & strErrorNO & strErrorMes)
129   return "writeToURL エラーしました" & strErrorNO & strErrorMes
130end if
131################################################
132#古いバージョンをゴミ箱に
133set refResponse to doGetAppPathURL(strBundleID)
134if refResponse is not false then
135   set listDone to (appFileManager's trashItemAtURL:(refResponse) resultingItemURL:(ocidDistAppPathURL) |error|:(reference))
136   if (item 2 of listDone) ≠ (missing value) then
137      set strErrorNO to (item 2 of listDone)'s code() as text
138      set strErrorMes to (item 2 of listDone)'s localizedDescription() as text
139      refMe's NSLog("■" & strErrorNO & strErrorMes)
140      log "エラーしました" & strErrorNO & strErrorMes
141   end if
142else
143   set listDone to (appFileManager's trashItemAtURL:(ocidDistAppPathURL) resultingItemURL:(ocidDistAppPathURL) |error|:(reference))
144end if
145
146
147################################################
148#解凍
149set strCommandText to ("/usr/bin/unzip \"" & strSaveFilePath & "\" -d \"" & strDistDirPath & "\"") as text
150set boolDone to doZshShellScript(strCommandText)
151if boolDone is true then
152   #
153   set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace()
154   set boolDone to appSharedWorkspace's openURL:(ocidDistDirPathURL)
155   
156end if
157#ZIPファイルもゴミ箱に
158set listDone to (appFileManager's trashItemAtURL:(ocidSaveFilePathURL) resultingItemURL:(ocidSaveFilePathURL) |error|:(reference))
159
160
161################################################
162#処理開始前のDOCKの内容を戻すことで同じ場所に登録
163##NSDATA
164set ocidOption to (refMe's NSDataWritingAtomic)
165set listDone to ocidPlistData's writeToURL:(ocidPlistFilePathURL) options:(ocidOption) |error|:(reference)
166if (item 1 of listDone) is true then
167   log "writeToURL 正常処理"
168else if (item 2 of listDone) ≠ (missing value) then
169   set strErrorNO to (item 2 of listDone)'s code() as text
170   set strErrorMes to (item 2 of listDone)'s localizedDescription() as text
171   refMe's NSLog("■" & strErrorNO & strErrorMes)
172   return "writeToURL エラーしました" & strErrorNO & strErrorMes
173end if
174
175################################################
176#バンドルIDからアプリケーションのパスURL
177################################################
178
179to doGetAppPathURL(argBundleID)
180   ###ワークスペース初期化
181   set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace()
182   set ocidAppBundle to (refMe's NSBundle's bundleWithIdentifier:(argBundleID))
183   if ocidAppBundle ≠ (missing value) then
184      set ocidAppPathURL to ocidAppBundle's bundleURL()
185   else if ocidAppBundle = (missing value) then
186      set ocidAppPathURL to (appSharedWorkspace's URLForApplicationWithBundleIdentifier:(argBundleID))
187   end if
188   if ocidAppPathURL = (missing value) then
189      tell application "Finder"
190         try
191            set aliasAppApth to (application file id argBundleID) as alias
192         on error
193            return "アプリケーションが見つかりませんでした"
194         end try
195      end tell
196      set strAppPath to POSIX path of aliasAppApth as text
197      set strAppPathStr to refMe's NSString's stringWithString:(strAppPath)
198      set strAppPath to strAppPathStr's stringByStandardizingPath()
199      set ocidAppPathURL to refMe's NSURL's alloc()'s initFileURLWithPath:(ocidFilePath) isDirectory:true
200   end if
201   if ocidAppPathURL = (missing value) then
202      return false
203   end if
204   return ocidAppPathURL
205end doGetAppPathURL
206
207
208##########################
209# 【通常】ZSH 実行
210to doZshShellScript(argCommandText)
211   set strCommandText to argCommandText as text
212   log "\r" & strCommandText & "\r"
213   set strExec to ("/bin/zsh -c '" & strCommandText & "'") as text
214   log "\r" & strExec & "\r"
215   ##########
216   #コマンド実行
217   try
218      log "コマンド開始"
219      set strResnponse to (do shell script strExec) as text
220      log "コマンド終了"
221   on error
222      return false
223   end try
224   return true
225end doZshShellScript
AppleScriptで生成しました

| | コメント (0)

[Applescript] Visual Studio Codeでファイルを開く方法 色々

こゆうのって、何が正解って事はない
マイブームでも良いし、単純に好きな方法でも良いと思う


ダウンロード - open_visualstudiocode.zip




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

OpenVsCode(openコマンドで開く).scpt
ソース
001#! /usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#
004# VS CODEで開きます
005#com.cocolog-nifty.quicktimer.icefloe
006----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
007use AppleScript version "2.8"
008use framework "Foundation"
009use framework "AppKit"
010use framework "UniformTypeIdentifiers"
011use scripting additions
012
013property refMe : a reference to current application
014
015
016on run
017   ###ダイアログを前面に出す
018   set strName to (name of current application) as text
019   if strName is "osascript" then
020      tell application "Finder" to activate
021   else
022      tell current application to activate
023   end if
024   # デフォルトロケーション
025   set appFileManager to refMe's NSFileManager's defaultManager()
026   set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask))
027   set ocidDesktopDirPathURL to ocidURLsArray's firstObject()
028   set aliasDesktopDirPath to (ocidDesktopDirPathURL's absoluteURL()) as alias
029   set listUTI to {"public.item"} as list
030   set strMes to ("ファイルをドロップしてください") as text
031   set strPrompt to ("ファイルをドロップしてください") as text
032   try
033      ### ファイル選択時
034      set aliasFilePath to (choose file strMes with prompt strPrompt default location (aliasDesktopDirPath) of type listUTI with invisibles and showing package contents without multiple selections allowed) as alias
035   on error
036      log "エラーしました"
037      return "エラーしました"
038   end try
039   
040   open aliasFilePath
041end run
042
043on open argAliasFilePath
044   ##パス
045   set aliasFilePath to argAliasFilePath as alias
046   set strFilePath to (POSIX path of aliasFilePath) as text
047   set ocidFilePathStr to refMe's NSString's stringWithString:(strFilePath)
048   set ocidFilePath to ocidFilePathStr's stringByStandardizingPath()
049   set ocidFilePathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:(ocidFilePath) isDirectory:false)
050   #
051   set listResponse to (ocidFilePathURL's getResourceValue:(reference) forKey:(refMe's NSURLContentTypeKey) |error|:(reference))
052   # listResponse{boolean,VALUE,NSERROR}のリスト形式
053   if (item 1 of listResponse) is (true) then
054      set ocidUTType to (item 2 of listResponse)
055      set ocidParentUTIArray to (ocidUTType's supertypes())'s allObjects()
056      set boolDoOpen to (missing value)
057      repeat with itemUTI in ocidParentUTIArray
058         set strUTI to itemUTI's identifier() as text
059         if strUTI is "public.item" then
060            log "処理します"
061            set boolDoOpen to true as boolean
062         else
063            #何もしない
064         end if
065      end repeat
066      
067      if boolDoOpen is true then
068         log "処理します"
069         set aliasFilePath to (ocidFilePathURL's absoluteURL()) as alias
070         set strFilePath to (ocidFilePathURL's |path|()) as text
071      else
072         return "たぶんフォルダ?なので処理しません"
073      end if
074   else if (item 1 of listResponse) is (false) then
075      log (item 3 of listResponse)'s code() as text
076      log (item 3 of listResponse)'s localizedDescription() as text
077      return "エラーコードで処理終了"
078   end if
079   
080   try
081      tell application "System Events"
082         tell application id "com.microsoft.VSCode"
083            open aliasFilePath
084         end tell
085      end tell
086   on error
087      try
088         set theCmdCom to ("open -a  \"Visual Studio Code\"  \"" & theFilePath & "\"") as text
089         do shell script theCmdCom
090      on error
091         set theCmdCom to ("open -b  \"com.microsoft.VSCode\"  \"" & theFilePath & "\"") as text
092         do shell script theCmdCom
093      end try
094   end try
095   
096end open
097
098
AppleScriptで生成しました

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

OpenVsCode(NSWorkspaceで開く).scpt
ソース
001#! /usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#
004# VS CODEで開きます
005#com.cocolog-nifty.quicktimer.icefloe
006----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
007use AppleScript version "2.8"
008use framework "Foundation"
009use framework "AppKit"
010use framework "UniformTypeIdentifiers"
011use scripting additions
012
013property refMe : a reference to current application
014
015
016on run
017   ###ダイアログを前面に出す
018   set strName to (name of current application) as text
019   if strName is "osascript" then
020      tell application "Finder" to activate
021   else
022      tell current application to activate
023   end if
024   # デフォルトロケーション
025   set appFileManager to refMe's NSFileManager's defaultManager()
026   set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask))
027   set ocidDesktopDirPathURL to ocidURLsArray's firstObject()
028   set aliasDesktopDirPath to (ocidDesktopDirPathURL's absoluteURL()) as alias
029   set listUTI to {"public.item"} as list
030   set strMes to ("ファイルをドロップしてください") as text
031   set strPrompt to ("ファイルをドロップしてください") as text
032   try
033      ### ファイル選択時
034      set aliasFilePath to (choose file strMes with prompt strPrompt default location (aliasDesktopDirPath) of type listUTI with invisibles and showing package contents without multiple selections allowed) as alias
035   on error
036      log "エラーしました"
037      return "エラーしました"
038   end try
039   
040   open aliasFilePath
041end run
042
043on open argAliasFilePath
044   ##パス
045   set aliasFilePath to argAliasFilePath as alias
046   set strFilePath to (POSIX path of aliasFilePath) as text
047   set ocidFilePathStr to refMe's NSString's stringWithString:(strFilePath)
048   set ocidFilePath to ocidFilePathStr's stringByStandardizingPath()
049   set ocidFilePathURL to refMe's NSURL's alloc()'s initFileURLWithPath:(ocidFilePath) isDirectory:(false)
050   #
051   set strBundleID to ("com.microsoft.VSCode") as text
052   set ocidAppBundle to (refMe's NSBundle's bundleWithIdentifier:(strBundleID))
053   if ocidAppBundle = (missing value) then
054      set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace()
055      set ocidAppPathURL to (appSharedWorkspace's URLForApplicationWithBundleIdentifier:(argBundleID))
056   else
057      set ocidAppPathURL to ocidAppBundle's bundleURL()
058   end if
059   set ocidConfig to refMe's NSWorkspaceOpenConfiguration's configuration
060   (ocidConfig's setActivates:(refMe's NSNumber's numberWithBool:true))
061   ocidConfig's setHides:(refMe's NSNumber's numberWithBool:false)
062   ##
063   set ocidOpenURLsArray to (refMe's NSMutableArray's alloc()'s initWithCapacity:0)
064   (ocidOpenURLsArray's addObject:(ocidFilePathURL))
065   ##
066   set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace()
067   (appSharedWorkspace's openURLs:(ocidOpenURLsArray) withApplicationAtURL:(ocidAppPathURL) configuration:(ocidConfig) completionHandler:(missing value))
068   
069   
070end open
071
072
AppleScriptで生成しました

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

OpenVsCode(com.microsoft.VSCodeで開く).scpt
ソース
001#! /usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#
004# VS CODEで開きます
005#com.cocolog-nifty.quicktimer.icefloe
006----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
007use AppleScript version "2.8"
008use framework "Foundation"
009use framework "AppKit"
010use framework "UniformTypeIdentifiers"
011use scripting additions
012
013property refMe : a reference to current application
014
015
016on run
017   ###ダイアログを前面に出す
018   set strName to (name of current application) as text
019   if strName is "osascript" then
020      tell application "Finder" to activate
021   else
022      tell current application to activate
023   end if
024   # デフォルトロケーション
025   set appFileManager to refMe's NSFileManager's defaultManager()
026   set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask))
027   set ocidDesktopDirPathURL to ocidURLsArray's firstObject()
028   set aliasDesktopDirPath to (ocidDesktopDirPathURL's absoluteURL()) as alias
029   set listUTI to {"public.item"} as list
030   set strMes to ("ファイルをドロップしてください") as text
031   set strPrompt to ("ファイルをドロップしてください") as text
032   try
033      ### ファイル選択時
034      set aliasFilePath to (choose file strMes with prompt strPrompt default location (aliasDesktopDirPath) of type listUTI with invisibles and showing package contents without multiple selections allowed) as alias
035   on error
036      log "エラーしました"
037      return "エラーしました"
038   end try
039   
040   open aliasFilePath
041end run
042
043on open argAliasFilePath
044   ##パス
045   set aliasFilePath to argAliasFilePath as alias
046   set strFilePath to (POSIX path of aliasFilePath) as text
047   #URLコンポーネント初期化
048   set ocidURLComponents to refMe's NSURLComponents's alloc()'s init()
049   ###スキーム を追加
050   ocidURLComponents's setScheme:("vscode")
051   ###ホストを追加
052   ocidURLComponents's setHost:("file")
053   ###パスを追加
054   set strPathString to "/" & strFilePath & ""
055   ocidURLComponents's setPath:(strPathString)
056   ##URLに戻して テキストにしておく
057   set ocidURL to ocidURLComponents's |URL|()
058   set strURL to ocidURL's absoluteString() as text
059   log strURL
060   tell application id "com.microsoft.VSCode"
061      open location strURL
062   end tell
063end open
064
065
AppleScriptで生成しました

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

OpenVsCode(Finderで開く).scpt
ソース
001#! /usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#
004# VS CODEで開きます
005#com.cocolog-nifty.quicktimer.icefloe
006----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
007use AppleScript version "2.8"
008use framework "Foundation"
009use framework "AppKit"
010use framework "UniformTypeIdentifiers"
011use scripting additions
012
013property refMe : a reference to current application
014
015
016on run
017   ###ダイアログを前面に出す
018   set strName to (name of current application) as text
019   if strName is "osascript" then
020      tell application "Finder" to activate
021   else
022      tell current application to activate
023   end if
024   # デフォルトロケーション
025   set appFileManager to refMe's NSFileManager's defaultManager()
026   set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask))
027   set ocidDesktopDirPathURL to ocidURLsArray's firstObject()
028   set aliasDesktopDirPath to (ocidDesktopDirPathURL's absoluteURL()) as alias
029   set listUTI to {"public.item"} as list
030   set strMes to ("ファイルをドロップしてください") as text
031   set strPrompt to ("ファイルをドロップしてください") as text
032   try
033      ### ファイル選択時
034      set aliasFilePath to (choose file strMes with prompt strPrompt default location (aliasDesktopDirPath) of type listUTI with invisibles and showing package contents without multiple selections allowed) as alias
035   on error
036      log "エラーしました"
037      return "エラーしました"
038   end try
039   
040   open aliasFilePath
041end run
042
043on open argAliasFilePath
044   ##パス
045   set aliasFilePath to argAliasFilePath as alias
046   set strFilePath to (POSIX path of aliasFilePath) as text
047   #URLコンポーネント初期化
048   set ocidURLComponents to refMe's NSURLComponents's alloc()'s init()
049   ###スキーム を追加
050   ocidURLComponents's setScheme:("vscode")
051   ###ホストを追加
052   ocidURLComponents's setHost:("file")
053   ###パスを追加
054   set strPathString to "/" & strFilePath & ""
055   ocidURLComponents's setPath:(strPathString)
056   ##URLに戻して テキストにしておく
057   set ocidURL to ocidURLComponents's |URL|()
058   set strURL to ocidURL's absoluteString() as text
059   log strURL
060   tell application "Finder"
061      open location strURL
062   end tell
063end open
064
065
AppleScriptで生成しました

| | コメント (0)

[Visual Studio Code]Opening VS Code with URLs ショートカット(Shortcuts)版

AutomationScriptはこちら
[VS Code]VS CodeでURLからファイルを指定して開く(Mac版)Opening VS Code with URLs
仕様はこちら
Opening VS Code with URLs
https://code.visualstudio.com/docs/editor/command-line#_opening-vs-code-with-urls

ダウンロード - open_vscode.zip


Open_vscodeshortcut

| | コメント (0)

[Visual Studio Code]コメント行に変換(JS用)


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

選択範囲をJSコメント.applescript
ソース
001#!/usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003(*
004vs code
005範囲選択 コピー
006クリップボードに入っっているテキストの行頭に
007//を 追加して
008コメント行として
009クリップボードに戻します
010-->自分でペースト
011
012com.cocolog-nifty.quicktimer.icefloe *)
013----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
014use AppleScript version "2.8"
015use framework "Foundation"
016###NSPasteboardAppkitなので必須
017use framework "AppKit"
018use scripting additions
019
020property refMe : a reference to current application
021
022
023################################
024#前面の書類選択範囲をコピーする
025################################
026log doCopySelectedTextVsCode()
027
028################################
029## クリップボードの中身取り出し
030################################
031###初期化
032set appPasteboard to refMe's NSPasteboard's generalPasteboard()
033##格納されているタイプをリストにして
034set ocidPastBoardTypeArray to appPasteboard's types()
035###テキストがあれば
036set boolContain to ocidPastBoardTypeArray's containsObject:(refMe's NSPasteboardTypeString)
037if (boolContain as boolean) is true then
038   set ocidTypeClassArray to refMe's NSMutableArray's alloc()'s init()
039   ocidTypeClassArray's addObject:(refMe's NSString)
040   set ocidReadStringArray to appPasteboard's readObjectsForClasses:(ocidTypeClassArray) options:(missing value)
041   set ocidReadString to ocidReadStringArray's firstObject()
042else
043   ###NSStringが無いなら public.utf8があるか?確認して
044   set boolContain to ocidPastBoardTypeArray's containsObject:("public.utf8-plain-text")
045   ##テキスト形式があるなら
046   if (boolContain as boolean) is true then
047      ###値を格納する
048      tell application "Finder"
049         set strReadString to (the clipboard as text) as text
050      end tell
051      set ocidReadString to refMe's NSString's stringWithString:(strReadString)
052   else
053      # "テキストなし"
054      return "クリップボードにコピーできませんでした"
055   end if
056end if
057################################
058## クリップボードの中身取り出し
059################################
060#出力用のテキスト
061set ocidOutPuttring to refMe's NSMutableString's alloc()'s init()
062
063
064
065
066set ocidChrSet to refMe's NSCharacterSet's newlineCharacterSet()
067set ocidLineArray to ocidReadString's componentsSeparatedByCharactersInSet:(ocidChrSet)
068
069repeat with itemLine in ocidLineArray
070   set boolComment to (itemLine's hasPrefix:("//")) as boolean
071   if boolComment is true then
072      (ocidOutPuttring's appendString:(itemLine))
073      (ocidOutPuttring's appendString:("\n"))
074   else if boolComment is false then
075      (ocidOutPuttring's appendString:("//\t"))
076      (ocidOutPuttring's appendString:(itemLine))
077      (ocidOutPuttring's appendString:("\n"))
078   end if
079end repeat
080
081
082try
083   set strText to ocidOutPuttring as text
084   ####ペーストボード宣言
085   set appPasteboard to refMe's NSPasteboard's generalPasteboard()
086   appPasteboard's clearContents()
087   appPasteboard's setString:(ocidOutPuttring) forType:(refMe's NSPasteboardTypeString)
088on error
089   tell application "Finder"
090      set the clipboard to strText as text
091   end tell
092end try
093
094
095return
096################################
097######パスコピーVScode
098################################
099
100to doCopyPathVsCode()
101   ###前面に出して
102   tell application "System Events"
103      launch
104   end tell
105   tell application "System Events"
106      activate
107   end tell
108   tell application id "com.microsoft.VSCode"
109      activate
110   end tell
111   delay 0.1
112   ###パス取得
113   tell application "System Events"
114      key down {command}
115      keystroke "k"
116      key up {command}
117      delay 0.1
118      key down {option, command}
119      keystroke "c"
120      key up {option, command}
121   end tell
122   
123end doCopyPathVsCode
124
125################################
126######選択範囲コピー
127################################
128
129to doCopySelectedTextVsCode()
130   ###前面に出して
131   tell application "System Events"
132      launch
133   end tell
134   tell application "System Events"
135      activate
136   end tell
137   tell application id "com.microsoft.VSCode"
138      activate
139   end tell
140   delay 0.2
141   ###パス取得
142   #tell application id "com.microsoft.VSCode"
143   #   activate
144   tell application "System Events"
145      #      tell application process "Electron"
146      key down {command}
147      keystroke "c"
148      key up {command}
149      #      end tell
150   end tell
151   #   end tell
152   return true
153end doCopySelectedTextVsCode
AppleScriptで生成しました

| | コメント (0)

Visual Studio Code アップデート(ARM)スクリプト

2025041910391080x1080_144

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

com.microsoft.VSCodeアップデート.applescript
ソース
001#!/usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003(* com.cocolog-nifty.quicktimer.icefloe
004 VS CODEのアップデートスクリプト
005   ARM版をダウンロードする
006*)
007#
008----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
009use AppleScript version "2.8"
010use framework "Foundation"
011use framework "UniformTypeIdentifiers"
012use framework "AppKit"
013use scripting additions
014property refMe : a reference to current application
015
016###アプリケーションのバンドルID
017set strBundleID to ("com.microsoft.VSCode") as text
018
019set strURL to "https://go.microsoft.com/fwlink/?linkid=2156837" as text
020
021################################################
022#URLとファイルパス
023set ocidURLString to refMe's NSString's stringWithString:(strURL)
024set ocidURL to refMe's NSURL's alloc()'s initWithString:(ocidURLString)
025#リダイレクト先を取得
026#リクエスト
027set appRequest to refMe's NSMutableURLRequest's requestWithURL:(ocidURL)
028appRequest's setHTTPMethod:("GET")
029appRequest's setTimeoutInterval:(1)
030#セッション
031set ocidConf to refMe's NSURLSessionConfiguration's defaultSessionConfiguration()
032set appQueue to refMe's NSOperationQueue's mainQueue()
033set appSession to refMe's NSURLSession's sessionWithConfiguration:(ocidConf) delegate:("self") delegateQueue:(appQueue)
034#簡易にこの記述でもいい
035#set appSession to refMe's NSURLSession's sharedSession()
036#タスク
037set appTask to appSession's dataTaskWithRequest:(appRequest)
038#タスクスタート
039appTask's resume()
040set ocidRedirectURL to (missing value)
041repeat 20 times
042   set ocidStatue to appTask's response()
043   #   log ocidStatue
044   if ocidStatue = (missing value) then
045      delay 0.2
046   else
047      set ocidStatue to appTask's response()
048      set ocidRedirectURL to ocidStatue's |URL|()
049      set ocidUniURL to ocidRedirectURL's absoluteString()
050      exit repeat
051   end if
052end repeat
053#タスク終了
054appTask's cancel()
055if ocidRedirectURL = (missing value) then
056   return "リダイレクトに失敗しています"
057end if
058################################################
059#
060log ocidUniURL as text
061set ocidArmURL to (ocidUniURL's stringByReplacingOccurrencesOfString:("VSCode-darwin-universal") withString:("VSCode-darwin-arm64"))
062log ocidArmURL as text
063set ocidArmURL to refMe's NSURL's alloc()'s initWithString:(ocidArmURL)
064set ocidZipFileName to ocidArmURL's lastPathComponent()
065#テンポラリにダウンロード
066set appFileManager to refMe's NSFileManager's defaultManager()
067set ocidTempDirURL to appFileManager's temporaryDirectory()
068set ocidUUID to refMe's NSUUID's alloc()'s init()
069set ocidUUIDString to ocidUUID's UUIDString
070set ocidSaveDirPathURL to ocidTempDirURL's URLByAppendingPathComponent:(ocidUUIDString) isDirectory:(true)
071#パス
072set ocidSaveFilePathURL to ocidSaveDirPathURL's URLByAppendingPathComponent:(ocidZipFileName) isDirectory:(false)
073set strSaveFilePath to ocidSaveFilePathURL's |path|() as text
074#
075set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSApplicationDirectory) inDomains:(refMe's NSUserDomainMask))
076set ocidApplicationDirPathURL to ocidURLsArray's firstObject()
077set ocidDistDirPathURL to ocidApplicationDirPathURL's URLByAppendingPathComponent:("Documents") isDirectory:(true)
078set strDistDirPath to ocidDistDirPathURL's |path|() as text
079set ocidDistAppPathURL to ocidDistDirPathURL's URLByAppendingPathComponent:("Visual Studio Code.app") isDirectory:(true)
080#
081set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s init()
082ocidAttrDict's setValue:(511) forKey:(refMe's NSFilePosixPermissions)
083set listDone to appFileManager's createDirectoryAtURL:(ocidSaveDirPathURL) withIntermediateDirectories:(true) attributes:(ocidAttrDict) |error|:(reference)
084#
085ocidAttrDict's setValue:(448) forKey:(refMe's NSFilePosixPermissions)
086set listDone to appFileManager's createDirectoryAtURL:(ocidDistDirPathURL) withIntermediateDirectories:(true) attributes:(ocidAttrDict) |error|:(reference)
087
088
089################################################
090#NSDATA
091set ocidOption to (refMe's NSDataReadingMappedIfSafe)
092set listResponse to refMe's NSData's alloc()'s initWithContentsOfURL:(ocidURL) options:(ocidOption) |error|:(reference)
093if (item 2 of listResponse) = (missing value) then
094   log "initWithContentsOfURL 正常処理"
095   set ocidReadData to (item 1 of listResponse)
096else if (item 2 of listResponse) ≠ (missing value) then
097   set strErrorNO to (item 2 of listResponse)'s code() as text
098   set strErrorMes to (item 2 of listResponse)'s localizedDescription() as text
099   refMe's NSLog("■" & strErrorNO & strErrorMes)
100   return "initWithContentsOfURL エラーしました" & strErrorNO & strErrorMes
101end if
102##NSDATA
103set ocidOption to (refMe's NSDataWritingAtomic)
104set listDone to ocidReadData's writeToURL:(ocidSaveFilePathURL) options:(ocidOption) |error|:(reference)
105if (item 1 of listDone) is true then
106   log "writeToURL 正常処理"
107else if (item 2 of listDone) ≠ (missing value) then
108   set strErrorNO to (item 2 of listDone)'s code() as text
109   set strErrorMes to (item 2 of listDone)'s localizedDescription() as text
110   refMe's NSLog("■" & strErrorNO & strErrorMes)
111   return "writeToURL エラーしました" & strErrorNO & strErrorMes
112end if
113################################################
114#古いバージョンをゴミ箱に
115set refResponse to doGetAppPathURL(strBundleID)
116if refResponse is not false then
117   set listDone to (appFileManager's trashItemAtURL:(refResponse) resultingItemURL:(ocidDistAppPathURL) |error|:(reference))
118   if (item 2 of listDone) ≠ (missing value) then
119      set strErrorNO to (item 2 of listDone)'s code() as text
120      set strErrorMes to (item 2 of listDone)'s localizedDescription() as text
121      refMe's NSLog("■" & strErrorNO & strErrorMes)
122      log "エラーしました" & strErrorNO & strErrorMes
123   end if
124else
125   set listDone to (appFileManager's trashItemAtURL:(ocidDistAppPathURL) resultingItemURL:(ocidDistAppPathURL) |error|:(reference))
126end if
127
128
129################################################
130#
131set strCommandText to ("/usr/bin/unzip \"" & strSaveFilePath & "\" -d \"" & strDistDirPath & "\"") as text
132set boolDone to doZshShellScript(strCommandText)
133if boolDone is true then
134   #
135   set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace()
136   set boolDone to appSharedWorkspace's openURL:(ocidDistDirPathURL)
137   
138end if
139#ZIPファイルもゴミ箱に
140set listDone to (appFileManager's trashItemAtURL:(ocidSaveFilePathURL) resultingItemURL:(ocidSaveFilePathURL) |error|:(reference))
141################################################
142#バンドルIDからアプリケーションのパスURL
143################################################
144
145to doGetAppPathURL(argBundleID)
146   ###ワークスペース初期化
147   set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace()
148   set ocidAppBundle to (refMe's NSBundle's bundleWithIdentifier:(argBundleID))
149   if ocidAppBundle ≠ (missing value) then
150      set ocidAppPathURL to ocidAppBundle's bundleURL()
151   else if ocidAppBundle = (missing value) then
152      set ocidAppPathURL to (appSharedWorkspace's URLForApplicationWithBundleIdentifier:(argBundleID))
153   end if
154   if ocidAppPathURL = (missing value) then
155      tell application "Finder"
156         try
157            set aliasAppApth to (application file id argBundleID) as alias
158         on error
159            return "アプリケーションが見つかりませんでした"
160         end try
161      end tell
162      set strAppPath to POSIX path of aliasAppApth as text
163      set strAppPathStr to refMe's NSString's stringWithString:(strAppPath)
164      set strAppPath to strAppPathStr's stringByStandardizingPath()
165      set ocidAppPathURL to refMe's NSURL's alloc()'s initFileURLWithPath:(ocidFilePath) isDirectory:true
166   end if
167   if ocidAppPathURL = (missing value) then
168      return false
169   end if
170   return ocidAppPathURL
171end doGetAppPathURL
172
173
174##########################
175# 【通常】ZSH 実行
176to doZshShellScript(argCommandText)
177   set strCommandText to argCommandText as text
178   log "\r" & strCommandText & "\r"
179   set strExec to ("/bin/zsh -c '" & strCommandText & "'") as text
180   log "\r" & strExec & "\r"
181   ##########
182   #コマンド実行
183   try
184      log "コマンド開始"
185      set strResnponse to (do shell script strExec) as text
186      log "コマンド終了"
187   on error
188      return false
189   end try
190   return true
191end doZshShellScript
AppleScriptで生成しました

| | コメント (0)

より以前の記事一覧

その他のカテゴリー

Accessibility Acrobat Acrobat 2020 Acrobat 2024 Acrobat AddOn Acrobat Annotation Acrobat AppleScript Acrobat ARMDC Acrobat AV2 Acrobat BookMark Acrobat Classic Acrobat DC Acrobat Dialog Acrobat Distiller Acrobat Form Acrobat GentechAI Acrobat JS Acrobat JS Word Search Acrobat Maintenance Acrobat Manifest Acrobat Menu Acrobat Merge Acrobat Open Acrobat PDFPage Acrobat Plugin Acrobat Preferences Acrobat Preflight Acrobat Print Acrobat Python Acrobat Reader Acrobat Reader Localized Acrobat Reference Acrobat Registered Products Acrobat SCA Acrobat SCA Updater Acrobat Sequ Acrobat Sign Acrobat Stamps Acrobat URL List Mac Acrobat URL List Windows Acrobat Watermark Acrobat Windows Acrobat Windows Reader Admin Admin Account Admin Apachectl Admin ConfigCode Admin configCode Admin Device Management Admin LaunchServices Admin Locationd Admin loginitem Admin Maintenance Admin Mobileconfig Admin NetWork Admin Permission Admin Pkg Admin Power Management Admin Printer Admin Printer Basic Admin Printer Custompapers Admin SetUp Admin SMB Admin softwareupdate Admin Support Admin System Information Admin TCC Admin Tools Admin Umask Admin Users Admin Volumes Admin XProtect Adobe Adobe AUSST Adobe Bridge Adobe Documents Adobe FDKO Adobe Fonts Adobe Reference Adobe RemoteUpdateManager Adobe Sap Code AppKit Apple AppleScript AppleScript Duplicate AppleScript entire contents AppleScript List AppleScript ObjC AppleScript Osax AppleScript PDF AppleScript Pictures AppleScript record AppleScript Video Applications AppStore Archive Archive Keka Attributes Automator BackUp Barcode Barcode Decode Barcode QR Bash Basic Basic Path Bluetooth BOX Browser Calendar CD/DVD Choose Chrome Chromedriver CIImage CityCode CloudStorage Color Color NSColor Color NSColorList com.apple.LaunchServices.OpenWith Console Contacts CotEditor CURL current application Date&Time delimiters Desktop Desktop Position Device Diff Disk do shell script Dock Dock Launchpad DropBox Droplet eMail Encode % Encode Decode Encode HTML Entity Encode UTF8 Error EXIFData exiftool ffmpeg File File Name Finder Finder Window Firefox Folder FolderAction Font List FontCollections Fonts Fonts Asset_Font Fonts ATS Fonts Emoji Fonts Maintenance Fonts Morisawa Fonts Python Fonts Variable Foxit GIF github Guide HTML Icon Icon Assets.car Illustrator Image Events ImageOptim Input Dictionary iPhone iWork Javascript Jedit Ω Json Label Language Link locationd lsappinfo m3u8 Mail Map Math Media Media AVAsset Media AVconvert Media AVFoundation Media AVURLAsset Media Movie Media Music Memo Messages Microsoft Microsoft Edge Microsoft Excel Microsoft Fonts Microsoft Office Microsoft Office Link Microsoft OneDrive Microsoft Teams Mouse Music Node Notes NSArray NSArray Sort NSAttributedString NSBezierPath NSBitmapImageRep NSBundle NSCFBoolean NSCharacterSet NSData NSDecimalNumber NSDictionary NSError NSEvent NSFileAttributes NSFileManager NSFileManager enumeratorAtURL NSFont NSFontManager NSGraphicsContext NSGraphicsContext Crop NSImage NSIndex NSKeyedArchiver NSKeyedUnarchiver NSLocale NSMetadataItem NSMutableArray NSMutableDictionary NSMutableString NSNotFound NSNumber NSOpenPanel NSPasteboard NSpoint NSPredicate NSRange NSRect NSRegularExpression NSRunningApplication NSScreen NSSet NSSize NSString NSString stringByApplyingTransform NSStringCompareOptions NSTask NSTimeZone NSUbiquitous NSURL NSURL File NSURLBookmark NSURLComponents NSURLResourceKey NSURLSession NSUserDefaults NSUUID NSView NSWorkspace Numbers OAuth PDF PDF Image2PDF PDF MakePDF PDF nUP PDF Pymupdf PDF Pypdf PDFContext PDFDisplayBox PDFImageRep PDFKit PDFKit Annotation PDFKit AnnotationWidget PDFKit DocumentPermissions PDFKit OCR PDFKit Outline PDFKit Start PDFPage PDFPage Rotation PDFView perl Photoshop PlistBuddy pluginkit plutil postalcode PostScript PowerShell prefPane Preview Python Python eyed3 Python pip QuickLook QuickTime ReadMe Regular Expression Reminders ReName Repeat RTF Safari SaveFile ScreenCapture ScreenSaver Script Editor Script Menu SF Symbols character id SF Symbols Entity Shortcuts Shortcuts Events sips Skype Slack Sound Spotlight sqlite StandardAdditions StationSearch Subtitles LRC Subtitles SRT Subtitles VTT Swift swiftDialog System Events System Settings TemporaryItems Terminal Text Text CSV Text MD Text TSV TextEdit Tools Translate Trash Twitter Typography UI Unit Conversion UTType valueForKeyPath Video VisionKit Visual Studio Code VMware Fusion Wacom Weather webarchive webp Wifi Windows XML XML EPUB XML HTML XML LSSharedFileList XML LSSharedFileList sfl2 XML LSSharedFileList sfl3 XML objectsForXQuery XML OPML XML Plist XML Plist System Events XML RSS XML savedSearch XML SVG XML TTML XML webloc XML xmllint XML XMP YouTube Zero Padding zoom