質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
AppleScript

AppleScriptは、アップル社が開発しているMac OS用のスクリプト言語。AppleScript本体に限らず、同じ言語で多くのAppleScript対応アプリケーションを操縦することが可能です。 自然言語(英語)に近い構文を持ちます。

Q&A

解決済

1回答

1537閲覧

AppleScriptでNumbersのdocumentが取得できない

sakura_hana

総合スコア11427

AppleScript

AppleScriptは、アップル社が開発しているMac OS用のスクリプト言語。AppleScript本体に限らず、同じ言語で多くのAppleScript対応アプリケーションを操縦することが可能です。 自然言語(英語)に近い構文を持ちます。

0グッド

0クリップ

投稿2018/03/08 06:58

編集2018/03/08 07:39

AppleScriptとサービスを使って、NumbersからXls書き出しを自動化しようとしています。
【AppleScript】開いているNumbersをExcelにエクスポートする - Qiita
このサイトを参考にやっていますが、エラーが出て正常に動作出来ません。


【追記】すみません、どういう訳かエラーは発生しなくなりました。(Numbersを再起動した為?)
ただ、思ったような処理が出来ていない為、前提条件から記載します。

Numbersファイル(拡張子が.numbers)を開き、下記スクリプトを実行した場合は正常に動作します。
Finderから該当のExcelファイル(拡張子が.xlsまたは.xlsx)をダブルクリックで開いた時、下記スクリプトを実行するとエラーは発生ませんが、ファイル内容の変更が行われません。

◆希望する挙動
0. example.xlsx をダブルクリックで開く
0. example.numbers として開かれる
0. データを修正する
0. サービス呼び出し(ファイルの保存はしない)
0. exmaple.xlsx に修正したデータが反映される

最初からNumbersのファイルを開いた場合は、ファイルの保存無しでも修正データが反映されました。
なので上記のように動作するかと思ったのですが、該当ファイルが開きっぱなしで上書き出来ない状態なのでしょうか。それにしてはエラーも出ないので困っています。

一旦Numbersファイルとして保存すればいい話ですが、出来れば上記のワークフローでやりたいと思っています。
引き続き情報を頂けると幸いです。


(以下、以前まで発生していたエラー)

◆そのままコピペした場合
構文エラーが発生します。
Numbersでエラーが起きました: documentは“count”メッセージを認識できません。

◆cntを変更してみた場合
tell application "Numbers" to set cnt to count documentの行を削除
repeat with i from 1 to cntrepeat with i from 1 to 1に変更

構文エラー
file of document 1 of application "Numbers"のタイプをstringに変換できません。

◆型変換を取っ払う
tell application "Numbers" to set theFile to file of document i as stringas stringを削除

構文エラー
Numbersでエラーが起きました: document 1を取り出すことはできません。

ちなみに他のサイトを見て作った以下のコードを動かしてみるとダイアログに「docu」とだけ表示されます。

AppleScript

1on run 2 tell application "Numbers" 3 activate 4 tell the front document 5 display dialog document 6 end tell 7 end tell 8end run

というわけでdocumentが正常に取得出来ていない感じがしていますが、どうしたらいいか分かりません。

なお、上記の構文エラーはNumbersを開いた状態にしておきAutomatorでRunさせてみた結果で、Numbersからこのサービスを呼び出すと「アクション“AppleScriptを実行”でエラーが起きました。」と表示されます。
(ダイアログを表示しているので該当のワークフローの呼び出し自体は正常に行えているのは確認出来ています)

何かコード不備、設定や確認すべき点、思い当たる点などがありましたら教えて頂けると幸いです。

動作環境
Mac Sierra 10.12.6
Numbers 4.3 / Automator 2.7

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

懐かしのAppleScript(笑)
いまだに区切り文字を変えて元に戻してで
文字列の検索置換しなきゃいけないのね

閑話休題

tellはだいたいwithみたいなもんなので
ブロックの中でそれ自身を見ることはできません

なのでdocumentの取得がそもそもできてるか確認したいなら

AppleScript

1on run 2 tell application "Numbers" 3 display dialog file of front document as string 4 end tell 5end run

みたいな感じで

ちなみに件のスクリプト、うちのMacだとちゃんと動きました

一度 「アプリケーション>ユーティリティー>スクリプトエディタ」から
AppleScriptだけを直接実行してみてAppleScriptの
コード以外の問題でないか確かめて見てください

確かAppleScriptでは同じアプリケーションの別バージョンが同居してると
バージョン名まで入れた名前を指定しなきゃいけなくなる、とか
あったようななかったような気がするのでその辺もちょっと確認してみてください

アプリケーションの参照自体ができてない場合も
スクリプトエディタから実行すればわかります

投稿2018/03/08 08:17

KazuhiroHatano

総合スコア7804

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sakura_hana

2018/03/08 08:59

ググって最初に出て来たので今でも使えるかなーと思い試してました(笑) ご提示のスクリプトをスクリプトエディタから動作させたところ、 Numbersファイルの時は該当ファイルのパスを表示したのに対し、 Excelファイル(をNumbersで開いた)時は「missing value」と表示されました。 やはり後者は「NumbersのようでNumbersでないファイル」として取り扱われているようです……
KazuhiroHatano

2018/03/08 09:03

ああ、ExcelをNumbersで開いてるのですね そうするとNumbersでは変換して保存されていない 新規ファイルを作った状態になっているので ドキュメントにはファイルパスの情報がありません
sakura_hana

2018/03/09 06:52

了解しました。 元ファイル(Excel)の場所が分かれば出来るかなーと思っていましたが、ちょっと難しそうなので運用方法でフォローします。(1回Numbersで保存すれば動くので) 情報ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問