このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

Clipboardをファイルに落としたいのですが

発言者:loony
( Date Friday, January 31, 1997 03:21:54 )


Clipboardにcopyしたものを、そのままファイルに落とすスクリプト
をAppleScriptで作ろうと思ったのですがうまくいきません。

Jon's command でclipboardが扱えると思い、

set writeData to the clipboard

として、writeDataをそのままopen for accessで新規に作成したファイルに書き込みました。
結果はplain textではうまく行くのですが、スタイル付きやpictデーター
だとうまくいきません。

set writeData to the clipboard as picture

とかにしても、スクリプト上ではpictでーたーとしてうまく行っているようなのですが
ファイルに落ちるとだめです。落としたファイルのfile typeをPICTに変えてみてもだめでした。

うまくいく方法がありましたら教えていただけないでしょうか。

田中求之 さんからのコメント
( Friday, January 31, 1997 11:32:49 )

ClipBoard にはさまざまな種類のデータをコピーしておけるようになっていますが、
これをそのままファイルに一発で落とすのは難しいです(データの種類を見分けて
それにあわせたファイルにしなければならないため)。

単純なテキストデータであれば osax で処理できますが、PICT やスタイル付き
テキスト情報となると、いったん何らかのアプリケーションを経由させて、という
ことになると思います。


loony さんからのコメント
( Friday, January 31, 1997 16:42:28 )

う〜ん、やっぱり予想していた通り難しいんですね。
ひょっとしたらできるのではないかと思っていたのですが…。

Hideaki Iimori さんからのコメント
( Friday, January 31, 1997 23:38:02 )

 Desktopに SimpleTextの Fileとして Saveするものを Usertalk
(Frontier)で書いてみましたが AppleScript + osaxでも同様にできる
でしょう。

 'PICT' fileは先頭に 512 byteの Headerが付きますので 0 で埋め
ます。
 Plain Textは単に Data Forkに書き、標準の Styled Textの場合は 
Resource type:'styl' ID:128に Style情報を追加します。

local {
  scrapData;
  path = file.getSpecialFolderPath("","Desktop Folder",true)
};
if clipboard.get('PICT',@scrapData) {
  path = path + "pict";
  file.new(path);
  file.setType(path,'PICT');
  file.setCreator(path,'ttxt');
  file.open(path);
  file.write(path,string.filledString(char(0),512));
  file.write(path,scrapData);
  file.close(path);
  return
};
if clipboard.get('TEXT',@scrapData) {
  path = path + "text";
  file.new(path);
  file.setType(path,'TEXT');
  file.setCreator(path,'ttxt');
  file.open(path);
  file.write(path,scrapData);
  file.close(path);
  if clipboard.get('styl',@scrapData) {
    rez.putResource(path,'styl',128,@scrapData)
  };
  return
}

田中求之 さんからのコメント
( Saturday, February 01, 1997 13:47:59 )

PICT の方は、AppleScript でなんとかなるかかなと思いますが、Styled Text の
方は、クリップボードから TEXT と styl を分けて取り出す必要があるのと、styl
をリソース化する必要がありますので、ちょっと難しいかもしれません。

Frontier を AppleScript で呼び出すのが手っ取り早いかもしれませんね (^_^;;
(そんなことするぐらいなら、Frontier だけでやっちゃえばいいわけですが)

loony さんからのコメント
( Saturday, February 01, 1997 18:31:56 )

なるほど、Frontierですか。使ったことはないのですが、
挑戦してみる価値はありそうですね。
スクリプトを見た感じ、面白そうだし。

Hideaki Iimori さん、どうもありがとうございます。

しかし、AppleScriptがこの手のものが苦手だとは意外です。

田中求之 さんからのコメント
( Sunday, February 02, 1997 02:37:51 )

>なるほど、Frontierですか。使ったことはないのですが、
>挑戦してみる価値はありそうですね。
>スクリプトを見た感じ、面白そうだし。

スクリプト言語としての肌理の細かさと機能の点では、Frontier の方が
圧倒的に AppleScript よりも上でしょう。

Multi-thread, PowerPC native というのも魅力ですしね。


大分県 安東 さんからのコメント
( Thursday, February 06, 1997 09:23:53 )

Clip2Gifを使うというのはどうですか ?


loony さんからのコメント
( Friday, February 07, 1997 21:09:19 )

グラフィックだけならclip2gifでもできそうですね。
全然試してませんが。

田中求之 さんからのコメント
( Monday, February 10, 1997 21:27:43 )

クリップボードから、 type ごとにデータを取り出すのは、Jon's Command osax
を使えば可能でした。