Keynoteの表の中に入っている1列目のデータをもとに、指定ルートフォルダ以下のサブフォルダを指定して、その下位フォルダに存在しているAppleScript書類の数をSpotlightでかぞえ、表の2列目に書き戻すAppleScriptです。
新著「Cocoa Scripting Course #1」の付録Scriptについて、各フォルダに入っているScript書類をかぞえて表に入れておく必要がありました。ただ、内容をアップデートするたびに書き換える必要があるので、自動でカウントして表に書き込むScriptを用意しました。
実行にはShane Stanleyの「Metadata Lib」を必要とします。実行にはScript Debuggerも必要です。Keynoteで表の入ったスライドを表示している必要もあります。表の1列目に書かれたサブフォルダ名を指定して、それぞれ含まれている書類数をカウントして表に書き戻します。
▲カウント対象フォルダ。AppleScript書類がフラット形式とバンドル形式の2つが混在して入っている
▲書類数をかぞえるルートフォルダを指定。表の1列目にかかれているフォルダ名と連結して、その下をすべてSpotlightで検索してファイルの存在確認を行う
AppleScript名:表の中に入っている1列目のデータをもとにフォルダ検索して値を返す.scptd |
— – Created by: Takaaki Naganoya – Created on: 2021/03/05 — – Copyright © 2021 Piyomaru Software, All Rights Reserved — use AppleScript version "2.7" — High Sierra (10.13) or later use framework "Foundation" use scripting additions use mdLib : script "Metadata Lib" version "2.0.0" –カウントするAppleScript書類が入っているフォルダのルートフォルダを指定 set origPath to POSIX path of (choose folder with prompt "Select Target folder") tell application "Keynote" tell front document tell current slide –現在のスライド上の表を取得 set tList to every table –表オブジェクトでループ repeat with i in tList –表オブジェクトの情報取得 tell i set colCount to column count set rowCount to row count set headerCount to header row count set footerCount to footer row count –表のセル内データを取得して2D Arrayにまとめる set newList to {} repeat with y from 1 to rowCount tell row y set cList to value of every cell set tmpL to {} repeat with ii in cList set jj to contents of ii if jj = missing value then set jj to "" –空欄はmissing valueが返ってくるのでヌルストリングに差し替え set the end of tmpL to jj end repeat set the end of newList to tmpL end tell end repeat –Keynoteの表データ1列目の情報をもとに、実際のフォルダの中のAppleScript書類を検索してカウントしてlistに記入 set new2List to items (headerCount + 1) thru -1 of newList repeat with ii in new2List copy ii to oneLine set targFolName to first item of oneLine set tmpTarg to origPath & "/" & targFolName & "/" –Spotlight検索でファイルを取得する set aResList to perform search in folders {tmpTarg} predicate string "kMDItemContentType == %@ || kMDItemContentType == %@" search arguments {"com.apple.applescript.script", "com.apple.applescript.script-bundle"} –フラット形式書類とバンドル形式書類を検索 set scrCount to length of aResList –書類数をカウント set last item of ii to scrCount end repeat –Keynoteの表にデータを書き戻す repeat with y from 1 to (length of new2List) tell row (y + 1) set aDat to contents of item y of new2List repeat with x from 1 to length of aDat –非同期実行モード(倍速処理) ignoring application responses tell cell x set its value to contents of (item x of aDat) end tell end ignoring end repeat end tell end repeat end tell end repeat end tell end tell end tell |
More from my site
(Visited 80 times, 1 visits today)
最前面のPDFで連続して同じページが存在するかチェック – AppleScriptの穴 says:
[…] このページは、AppleScriptにより実際のファイルを検出して表の内容を自動更新していたのですが、その作業バックアップのためにページそのものを複製して誤操作というか作業のやり直 […]