Menu

Skip to content
AppleScriptの穴
  • Home
  • Products
  • Books
  • Docs
  • Events
  • Forum
  • About This Blog
  • License
  • 仕事依頼

AppleScriptの穴

Useful & Practical AppleScript archive. Click '★Click Here to Open This Script' Link to download each AppleScript

Keynoteの表の中に入っている1列目のデータをもとにフォルダ検索して値を返す

Posted on 3月 6, 2021 by Takaaki Naganoya

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

★Click Here to Open This Script 

More from my site

  • Keynoteで現在のスライドのタイトルを指定の文字ではじまるテキストアイテムにコピーするKeynoteで現在のスライドのタイトルを指定の文字ではじまるテキストアイテムにコピーする
  • Keynoteの表の背景色がない箇所を白く塗るKeynoteの表の背景色がない箇所を白く塗る
  • Keynoteで現在表示中のスライド上にあるすべての表のカラム幅を自動調整Keynoteで現在表示中のスライド上にあるすべての表のカラム幅を自動調整
  • Keynoteで選択中のオブジェクトをテキストとサイズを元に特定するKeynoteで選択中のオブジェクトをテキストとサイズを元に特定する
  • Keynoteで全スライドのタイトルアイテムの高さを統一Keynoteで全スライドのタイトルアイテムの高さを統一
  • 指定した文字で囲まれたキーワードの色を置換する指定した文字で囲まれたキーワードの色を置換する
(Visited 81 times, 1 visits today)
Posted in file list Spotlight | Tagged 10.14savvy 10.15savvy 11.0savvy Keynote | 1 Comment

1 thoughts on “<span>Keynoteの表の中に入っている1列目のデータをもとにフォルダ検索して値を返す</span>”

  1. 3/13/21
    5:22 PM
    2021年3月13日
    5:22 PM

    Reply

    最前面のPDFで連続して同じページが存在するかチェック – AppleScriptの穴 says:

    […] このページは、AppleScriptにより実際のファイルを検出して表の内容を自動更新していたのですが、その作業バックアップのためにページそのものを複製して誤操作というか作業のやり直 […]

Leave a Reply to 最前面のPDFで連続して同じページが存在するかチェック – AppleScriptの穴 Cancel reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

電子書籍(PDF)をオンラインストアで販売中!

Google Search

Popular posts

  • macOS 13, Ventura(継続更新)
  • アラートダイアログ上にWebViewで3Dコンテンツを表示(WebGL+three.js)v3
  • Xcode 14.2でAppleScript App Templateを復活させる
  • macOS 13 TTS Voice環境に変更
  • UI Browserがgithub上でソース公開され、オープンソースに
  • 2022年に書いた価値あるAppleScript
  • ChatGPTで文章のベクトル化(Embedding)
  • 新発売:AppleScriptからSiriを呼び出そう!
  • iWork 12.2がリリースされた
  • 新発売:CotEditor Scripting Book with AppleScript
  • macOS 13対応アップデート:AppleScript実践的テクニック集(1)GUI Scripting
  • macOS 13でNSNotFoundバグふたたび
  • ChatGPTでchatに対する応答文を取得
  • 新発売:iWork Scripting Book with AppleScript
  • Finderの隠し命令openVirtualLocationが発見される
  • macOS 13.1アップデートでスクリプトエディタの挙動がようやくまともに
  • あのコン過去ログビューワー(暫定版)
  • AppleScriptの数値変数で指数表示にならない最大値、最小値
  • バカスタム App選手権 入賞!
  • macOS 14, Sonoma

Tags

10.11savvy (1101) 10.12savvy (1242) 10.13savvy (1390) 10.14savvy (586) 10.15savvy (434) 11.0savvy (277) 12.0savvy (186) 13.0savvy (59) CotEditor (60) Finder (47) iTunes (19) Keynote (99) NSAlert (60) NSArray (51) NSBezierPath (18) NSBitmapImageRep (20) NSBundle (20) NSButton (34) NSColor (51) NSDictionary (27) NSFileManager (23) NSFont (18) NSImage (41) NSJSONSerialization (21) NSMutableArray (62) NSMutableDictionary (21) NSPredicate (36) NSRunningApplication (56) NSScreen (30) NSScrollView (22) NSString (117) NSURL (97) NSURLRequest (23) NSUTF8StringEncoding (30) NSView (33) NSWorkspace (20) Numbers (57) Pages (38) Safari (41) Script Editor (20) WKUserContentController (21) WKUserScript (20) WKUserScriptInjectionTimeAtDocumentEnd (18) WKWebView (23) WKWebViewConfiguration (22)

カテゴリー

  • 2D Bin Packing
  • 3D
  • AirDrop
  • AirPlay
  • Animation
  • AppleScript Application on Xcode
  • beta
  • Bluetooth
  • Books
  • boolean
  • bounds
  • Bug
  • Calendar
  • call by reference
  • Clipboard
  • Code Sign
  • Color
  • Custom Class
  • dialog
  • drive
  • exif
  • file
  • File path
  • filter
  • folder
  • Font
  • Font
  • GAME
  • geolocation
  • GUI
  • GUI Scripting
  • Hex
  • History
  • How To
  • iCloud
  • Icon
  • Image
  • Input Method
  • Internet
  • iOS App
  • JavaScript
  • JSON
  • JXA
  • Keychain
  • Keychain
  • Language
  • Library
  • list
  • Locale
  • Machine Learning
  • Map
  • Markdown
  • Menu
  • Metadata
  • MIDI
  • MIME
  • Natural Language Processing
  • Network
  • news
  • Noification
  • Notarization
  • Number
  • Object control
  • OCR
  • OSA
  • PDF
  • Peripheral
  • PRODUCTS
  • QR Code
  • Raw AppleEvent Code
  • Record
  • rectangle
  • recursive call
  • regexp
  • Release
  • Remote Control
  • Require Control-Command-R to run
  • REST API
  • Review
  • RTF
  • Sandbox
  • Screen Saver
  • Script Libraries
  • sdef
  • search
  • Security
  • selection
  • shell script
  • Shortcuts Workflow
  • Sort
  • Sound
  • Spellchecker
  • Spotlight
  • SVG
  • System
  • Tag
  • Telephony
  • Text
  • Text to Speech
  • timezone
  • Tools
  • Update
  • URL
  • UTI
  • Web Contents Control
  • WiFi
  • XML
  • XML-RPC
  • イベント(Event)
  • 未分類

アーカイブ

  • 2023年10月
  • 2023年9月
  • 2023年8月
  • 2023年7月
  • 2023年6月
  • 2023年5月
  • 2023年4月
  • 2023年3月
  • 2023年2月
  • 2023年1月
  • 2022年12月
  • 2022年11月
  • 2022年10月
  • 2022年9月
  • 2022年8月
  • 2022年7月
  • 2022年6月
  • 2022年5月
  • 2022年4月
  • 2022年3月
  • 2022年2月
  • 2022年1月
  • 2021年12月
  • 2021年11月
  • 2021年10月
  • 2021年9月
  • 2021年8月
  • 2021年7月
  • 2021年6月
  • 2021年5月
  • 2021年4月
  • 2021年3月
  • 2021年2月
  • 2021年1月
  • 2020年12月
  • 2020年11月
  • 2020年10月
  • 2020年9月
  • 2020年8月
  • 2020年7月
  • 2020年6月
  • 2020年5月
  • 2020年4月
  • 2020年3月
  • 2020年2月
  • 2020年1月
  • 2019年12月
  • 2019年11月
  • 2019年10月
  • 2019年9月
  • 2019年8月
  • 2019年7月
  • 2019年6月
  • 2019年5月
  • 2019年4月
  • 2019年3月
  • 2019年2月
  • 2019年1月
  • 2018年12月
  • 2018年11月
  • 2018年10月
  • 2018年9月
  • 2018年8月
  • 2018年7月
  • 2018年6月
  • 2018年5月
  • 2018年4月
  • 2018年3月
  • 2018年2月

https://piyomarusoft.booth.pm/items/301502

メタ情報

  • ログイン
  • 投稿フィード
  • コメントフィード
  • WordPress.org

Forum Posts

  • 人気のトピック
  • 返信がないトピック

メタ情報

  • ログイン
  • 投稿フィード
  • コメントフィード
  • WordPress.org
Proudly powered by WordPress
Theme: Flint by Star Verte LLC