表中のセルに画像を配置 javascript

[4876]表中のセルに画像を配置 javascript | 投稿者:ねこ | 投稿日:2010/07/06(Tue) 13:06:39
いつもお世話になってます。
検索をかけたのですが無かったのでたてさせてもらいます。

手作業の流れの中でセルに画像を配置(セルにグラフィックフレームを作りそのフレーム内に画像を配置)という作業をしています。

今回その仕事をjavascriptで組もうと思っているのですが。
javascriptで表中のセルに画像を配置、というものは出来るのでしょうか?

お手数ですがご教授お願い致します。
» 1
[4877]Re: 表中のセルに画像を配置 javascript | 投稿者:いき | 投稿日:2010/07/06(Tue) 13:40:25
できますが、Javascriptの質問であれば、どこまでコードを書いていて、どこで詰まったかを示していただいたほうが具体的なアドバイスがつきやすいと思います。
例えば、セルの中に目印となる文字列をあらかじめ入れておき、そこを画像に置換するというアプローチなのか、セルの端から何らかの順番で入れていくのか、など。
» 2
できます。
あとはご自分で頑張って書いたものをここでアップしてくださいね。
そうすれば的確なアドバイスがいただける可能性が高くなります。
なにも書かれてない状態ではアドバイスできません。
こちらも暇じゃないので。

この手の質問をする方がなかなか減らないので毒を吐きます。
JavaScriptを使えばある程度のことは実現できます。
が、赤の他人様のために書いて0から書いてあげるつもりは今の私にはありません。
(過去に私が書いたものが使えるなら、教える可能性はあります)
こちらは仕事の合間や休憩中にある意味身銭を切って書いているわけで、それを「掲示板に要望を書き込んだら対価なしにあっさり手に入れられる」っていう風潮に持っていかれるのは正直不快なんです。
ご自分で勉強されてはいかがでしょうか?
たぶんググればご要望のことができるかどうかぐらいは判断できると思います。
その上で自分でJavaScriptなりを書いてここにアップしてください。
そうすれば私もアドバイスできると思います。

気分を悪くなされる方もいるかと思いますが、ずーーーーーっと気になってたので、書かせていただきました。
» 3
[4883]Re: 表中のセルに画像を配置 javascript | 投稿者:ねこ | 投稿日:2010/07/07(Wed) 08:45:49
いき様、こうちゃん犬猫まみれ様、レスありがとうございます。そしてすいません・・・やりたいことが明確ではありませんでしたね
皆様には不快な思いをさせてしまい申し訳ありませんでした。

いき様のおっしゃっている「セルの中に目印となる文字列をあらかじめ入れておきその後画像に置換する」という方法もわからないのですが、確かVB scriptでならあった気がしますのでそれをヒントにどうにか考えていきたいと思います。

今回私がしたかったのは添付画像のようなものでセルの中に画像フレームをペーストする方法です。
・画像フレームを作成
・画像フレームに画像を配置
・画像フレームをカット
・表を作成
・そのままペーストするとオーバーフロー(実際にはセルをはみ出して貼付けたい)してしまうため段落スタイル・セルスタイルで行間を0に文字の入りを下揃えに変更
・表の指定したセルの中にカットした画像フレームをペースト

ということをしたいのですが、ペーストの機能がうまくいかず、セルを選択範囲にして貼付けようと思ったらこれは手動でも貼ることができず。
カーソルがそのセルにあるならそのままペーストで・・・と思っていたのですが、その書き方がわからず躓いています。
以下書き途中のスクリプトですが載せます。スタイルの設定、画像配置は抜いています。

//画像フレーム作成
imObj = app.activeDocument.rectangles.add();
imObj.visibleBounds = ["0mm","0mm","10mm","10mm"];
imObj.strokeWeight = 0
imObj.select();
app.cut()

var tfObj = app.activeDocument.pages[0].textFrames.add();
tfObj.visibleBounds = ["0mm","0mm","138mm","43mm"]; //表を入れるためのテキストボックス作成
var tbObj = tfObj.tables.add(); //表を挿入
tbObj.bodyRowCount = 2; //行
tbObj.columnCount = 2; //列
tbObj.rows[0].cells[0].select();
var cel = app.selection[0];
cel.insertionPoints[0].paste(); //カットしたものをセルにペースト
attached image
» 4
[4884]Re: 表中のセルに画像を配置 javascript | 投稿者:梅花藻 | 投稿日:2010/07/07(Wed) 09:01:11
InsertionPointのメソッドにはplace()はありますが、paste()はありませんので、最後の3行を

tbObj.rows[0].cells[0].insertionPoints[0].select();
app.paste();

としたらペーストできないでしょうか?(未確認、うまくいかなかったらゴメンナサイ)
» 5
[4885]Re: 表中のセルに画像を配置 javascript | 投稿者:いき | 投稿日:2010/07/07(Wed) 09:09:03
tbObj.rows[0].cells[0].select();
まではいいのですが、そこから後を

var my_menu_action = app.menuActions.item("$ID/Switch From Cell Selection to Text Selection");
my_menu_action.invoke();
app.paste(); //カットしたものをペースト

としてみてはいかがでしょうか。
» 6
[4886]Re: 表中のセルに画像を配置 javascript | 投稿者:いき | 投稿日:2010/07/07(Wed) 09:32:55
あ、ごめんなさい。
私の書き方だと、スクリプト中でセルの内容にあらかじめ何らかの文字列をセットしないことが前提になっちゃいますね。
梅花藻さんの書き方の方がいいです^^
» 7
[4887]Re: 表中のセルに画像を配置 javascript | 投稿者:mg | 投稿日:2010/07/07(Wed) 09:49:30
順番が逆になりますが、画像用フレーム作ってから配置なら、cut(), copy(), paste()といった、スクリプト途中で不確定要素が入りやすいメソッドを使わずに出来ます。

「前略」
tbObj.columnCount = 2; //列
<以降変更>
var c = tbObj.rows[0].cells[0];
c.texts[0].leading=0;//これは段落スタイルなどで
var g = c.insertionPoints[0].rectangles.add({visibleBounds : ["0mm","0mm","10mm","10mm"],strokeWeight : 0});
g.select();
<ここで配置する処理>
» 8
[4889]Re: 表中のセルに画像を配置 javascript | 投稿者:ねこ | 投稿日:2010/07/08(Thu) 08:42:30
梅花藻様、いき様、mg様、レスありがとうございます。

梅花藻様>>
上手くいけたのでこのやり方で行きたいと思います。
もうちょっといじればこのやり方で文字を始めにいれて置いて後から文字列を画像に置換しようと思っていた部分も上手く作成できそうです。

いき様>>
文字列が入ってない事が前提とのことですが今回やる物件は文字列が入らないのですが今回は勧められた梅花藻様のやり方で勧めたいと思います。
ありがとうございました。


mg様>>
そのまま使ってみたら
「このオブジェクトのあるスプレッドを特定できません。オーバーセットまたは未構成のテキスト内にあるアンカー付きオブジェクトである可能性があります。」
というエラーがでた(CS2で試したからでしょうか・・・)ため、使用できませんでした。私の勉強不足が原因と思いますのでしっかり理解してからこのやり方でいけるならこのやり方でやりたいと思います。

今回は勉強不足の私のためにご教授いただきありがとうございました。
この記事の書き込み元へのリンク (コメントや質問などはこちらへどうぞ)