現在オープン中の最前面のKeynote書類の各スライド(ページ)のタイトルを取得して、Numbersの新規書類上にページとタイトルの一覧表を作成するAppleScriptです。
こういうのが、一番オーソドックスで誰でも「そういうのがあったら楽なのに」と思わせるような用途でしょう。
Keynoteの書類を作成してページ数が増え、タイトル一覧をながめつつ削除したりアップデートしたりする対象を探したいような場合に、このような一覧表を作成させるとわかりやすくて便利です。
本Scriptは本当にありもののルーチンをつなげて最低限の処理を行わせたものですが、さらに手の込んだ処理を行うことも可能です。たとえば、別途Keynote書類をスライド(ページ)ごとに画像書き出ししておいて、Numbersのセル上にプレビュー画像として入れておくとか。あるいは、Keynote書類の各スライドのマスターアイテム名を見て処理を変えるとか。実にいろいろあります。
作成と動作確認はmacOS 10.14.5+Keynote 9.0.2で行っていますが、macOS 10.13/10.12でも動作するはずですしました。
AppleScript名:Keynoteの各slideのtitleから目次のテキストを作成してNumbersの表を作成 |
— – Created by: Takaaki Naganoya – Created on: 2019/05/20 — – Copyright © 2019 Piyomaru Software, All Rights Reserved use AppleScript version "2.4" — Yosemite (10.10) or later use framework "Foundation" use scripting additions –Keynoteの各slideのタイトルを取得する tell application "Keynote" tell document 1 set aList to object text of default title item of every slide end tell end tell set aLen to (length of aList) + 1 –ヘッダー行の分を+1 set bLen to 2 –data width (columns) –2D Listを作成する (Page, Title) set newList to {} set pCount to 1 repeat with i in aList set j to contents of i set the end of newList to {pCount as string, j} set pCount to pCount + 1 end repeat –Numbersの書類を新規作成して、指定サイズの表を作成する makeNewNumbersDocumentAndTable(aLen, bLen) of me –作成した新規書類の表1に2D Listを入れる(ただし、100行分ぐらいを上限とする。それ以上は別途CSVを書き出してオープンさせたほうが圧倒的に高速)I fillCurrentTable(newList) of me on fillCurrentTable(aList) set aLen to length of aList set aWidth to length of first item of aList tell application "Numbers" tell front document tell active sheet tell table 1 repeat with i from 1 to aLen tell row (i + 1) set aRowList to contents of item i of aList repeat with ii from 1 to aWidth tell cell ii set aTmpData to contents of item ii of aRowList ignoring application responses set value to aTmpData end ignoring end tell end repeat end tell end repeat end tell end tell end tell end tell end fillCurrentTable on makeNewNumbersDocumentAndTable(aHeight, aWidth) tell application "Numbers" make new document tell front document tell active sheet delete every table end tell end tell tell front document tell active sheet set tRes to make new table with properties {row count:aHeight, column count:aWidth} return tRes end tell end tell end tell end makeNewNumbersDocumentAndTable |
More from my site
(Visited 1,211 times, 1 visits today)