Quantcast
Channel: Script –やもめも

あえてScriptを使わずに串刺しナンバリングしてみる(小ネタ)

$
0
0

こんな世知辛い世の中だし、Script作れないしあえてScriptも正規表現も使わずにやってみる。

要件は以下

  • 8面付けのテンプレート使用
  • ナンバーは開始1、増分1、任意の数で終わる
  • 面付け数に応じて串刺しになるようにする

(※串刺しが何かは20101023東京勉強会関連 – These are the days of my life /?実験る?む 串刺し面付けってなぁに? を参照でよろ)

作業内容は以下

  1. ナンバーを作る
  2. 串刺しに敵うようにする
  3. InDesignに流し込んで自動でページ生成する

その前に計算する。500枚分作り、8面付けで割って一列の数字を出す。500÷8≠63 これが最左列の数字になる。

Excelちゃんを用意。

オートフィルで最左列に1から63までを入力させる。

右の列以降に次の式を入力

7列に全コピーして8列分作る。

(セルの選択はめんどくさいので、列選択でずらずらっと)

できたものをとりあえずコピー

下に余計なものができるけど気にしない。最左列の最下段から上に全選択してコピーする。

新規書類に貼り付けて、最右列に生成されちゃった501番以降を消しておく…手作業クリーニング

csvに書き出し。

書き出したものをテキストエディタで開く(これからまたまた手作業クリーニング

余計なスペースを検索置換で削除。

カンマを改行に置換。一行一項目にしておく。

整形し終わったデータがこれ

整形終わり。

InDesignのテンプレを開く

マスターにリンクしたテキストフレームを置いてるだけ。

データ結合とか使わない

整形したデータは1行1項目なので、1行しか入らないフレームを用意してテキスト流し込みすりゃいいのさ。ははは

流し込み。

できました。トンボ付いてないとか言わない、そこ。

速いです。ただの流し込み&ページ生成だし。

……ぁあああっ!めんどくせっ!!!

その上ちょっと、いやかなり恥ずかしい!!!(笑)

っと、思ったら

自動化できるところをマシンにやらせてみよう!(前振りなげぇ)

まず、

  1. ナンバーを作る
  2. 串刺しに敵うようにする
  3. InDesignに流し込んで自動でページ生成する

のうち、一番めんどくさかった1と2をなんとかしようそうしよう。

ん〜

どうしよう?w

何を使ってやろうか。

考えられるのは、

  • JavaScript…となるとどれに生成させる?InDesignに?ハードル高い
  • Excel…VBAか。今から覚えるのヤダ
  • AppleScript…フルスクラッチしたことないし。

あ、ターミナル.app君がいるじゃないか!ShellScriptならなんとかやれそうだぞ!

というわけで書いてみる。


#!/bin/bash
#20101102さらに修正(mori_tacsiさんThanks)

#使い方
#kushi.sh 最大数 面付数 > filename

#初期化
leftnum=0 
countnum=0 
maxnum=$1
mennum=$2

#一行の増分計算と前処理。剰余があれば1を足す
plusnum=$[$maxnum / $mennum + (($maxnum % $mennum) > 0)]
maxnum=$[$maxnum+1]

#最右列がなくなるまで繰り返す
while [ $leftnum -lt $[$plusnum] ]  
do
	leftnum=$[$leftnum+1] 
	repcount=0

#面付け数分繰り返す	
	while [ $repcount -lt $mennum ] 
	do
		prnum=$[$leftnum+$repcount*$plusnum] 
		repcount=$[$repcount+1] 

#最大値を超えないなら出力
		if [ $prnum -lt $maxnum ];then 
			echo $prnum
			countnum=$[$countnum+1] 


#トータルカウントが最大値を超えたら終了
			if [ $countnum -gt $maxnum ];then 
				exit 
			fi
#最大値を超えている場合空行を出力
			else 
			echo ""
		fi
	done
done

でけたよー chmod +xして使うよー

(注意:別に使うのはいいですが、一切の責任は持ちませんのであしからず。エラー処理一切してないから、重要なファイルが消えても知らんで。まじで。おまけに筆者は数字が嫌いだから、結果に責任持てません。おまけにbashオンリーでごわす。うちでは動いてるから、動かないとか言われても困る)

これでリスト1と2が同時に行えてしまうのだ!

しかも実行時に数と面付け数を決められる!ということは汎用性が高い!

楽だ!

よね?(^^;

ぐぬぬ。まとめだ

もしなんか自動化とかやってみたいねぇ、と思ったら、いきなり新規にフロー変更やクソ高いソフトウェア導入のために稟議書書いて却下される日々を送る前に、

今あるフローのうち、いじれるところはどこか無いか、と考えてみると、いいかもね、という話でした。長いよ前振りが。

今回の要件のような単純な数字であればテキスト流し込みでいけてしまう。テキスト流し込みならInDesignでなくても、J-800やELWINやらでもデータさえ渡せばできるし。注意点は多いですよ。でも最小の学習で効果が出るんです。

やれるところでやっとけばいいんですよ。ということを言いたかった。はあはぁ。

今回ShellScriptを選んだのは、リスト1と2に適合しているからです。shellによる数値操作(&条件分岐)と、ファイル書き出しにより整形された数字が手に入ること、対話的操作ができること。

あと最も重要な理由は、他のプログラム言語よりもワタシにとっては近かったこと。

その気になれば、Excel関数を駆使してできなくもないかもしれません。保証はしない。…けれど。

今持ってる道具と知識を追い込んでみることで、次に必要な物も見えてくる。そー思います。


関連Link

お話してきました。 – These are the days of my life

串刺し印刷について。 – These are the days of my life

実験る?む 串刺し面付けってなぁに?

僕もScriptを使わずに串刺しナンバリング – たけうちとおるのスクリプトノート

あえてScriptを使って串刺しナンバリングしてみる(小ネタ) – 名もないテクノ手

くしざし試作 – Quill.to/chalcedony

30)僕もScriptを使って串刺しナンバリング – たけうちとおるのスクリプトノート

Sus scrofa liaodongensis: 串刺しナンバリング:焼き鳥の一品ではござらぬ

Sus scrofa liaodongensis: 串刺しナンバリング:改訂したけど、ウミスズメの黒焼きではありません。

Sus scrofa liaodongensis: 串刺しナンバリング:冗談なれど、王立協会は些かも疎かにせず

Twitter / @市川せうぞー: ruby -e ‘s=1;e=80;m=8;p=(( …

Adobe Forums: I need to number 20,000 tickets in…

Win for DTP 串刺し番号をVBAで作ってみる。

Win for DTP 串刺しネタでもう1個。

karari blog ? Blog Archive ? 串刺しナンバリングをRubyでやってみる

M.C.P.C.: 3年前の串刺しナンバリングの動画を今見たら何をやっているかわかんない

AWK Users JP::串刺し印刷のナンバリングを行う


Kushizashiはワールドワイドに

$
0
0

東京の端っこで、DTPの勉強部屋で行われたショートセッションでうら若きDTPerが発した一言が、えらいことになってるで。

未だこの事件は進行中(#kushizashi)。途中経過としてちょっとまとめてみる。便乗便乗。

その前におさらい。串刺し面付けとは…

20101023東京勉強会関連 ? These are the days of my life /?実験る?む 串刺し面付けってなぁに? も参照。

同じ事やってるけど気にしない(笑)

1〜200までナンバー振られたチケットを4面つけて印刷するとします。そゆとき、

こう、重なる方向で数字が揃うように振れば、

断裁すると、

ちゃわんと数字が並んだ状態になる、と。まとまっていれば、断裁したひとかたまりで扱えるので楽。あと断裁の現場で、断裁途中や梱包前のこまい製品が並んでいても管理が楽

このとき、できれば1回に断裁する枚数(250〜500、1000。紙厚による)で巡回するように振り、後加工までそのカタマリで回せるともう少し後が楽なんですが、ヘタ打つと逆効果な上ミスの元なんで考えなくていいです。職人タイプの断裁オペだと「いいよいいよそんなこと!」とか言うと思うけどバッチリ決まれば多少楽だから。ワタシがプリントから発送まで一人でやるならそうする(要は製品毎に仕様確認してしっかりコミュとってね、ってこと)

串刺し、やらないとどうなるかは串刺し会長(「串刺し」事件の発端となった方w)が20101023東京勉強会関連 ? These are the days of my lifeで描いていますのでそこ参照(笑)

スクリプターが寄ってたかって…

先生、恐ろしい現象を目にしました。東西のスクリプターが寄ってたかって大人げなさを発揮しているのを(笑)

僕もScriptを使わずに串刺しナンバリング ? たけうちとおるのスクリプトノート

とここまではおとなげ、あった(?)ここからなんだか凄いことに。

あえてScriptを使って串刺しナンバリングしてみる(小ネタ) ? 名もないテクノ手

いきなりIndesign使いへの串刺しナンバリング完成w

オラ、ワクワクしてきたぞ!

そしたらおとなげあった人も…

30)僕もScriptを使って串刺しナンバリング ? たけうちとおるのスクリプトノート

キター!w

そして延焼。さらに爆発は続き、言語の幅が広がる広がる…

くしざし試作 ? Quill.to/chalcedony

Sus scrofa liaodongensis: 串刺しナンバリング:焼き鳥の一品ではござらぬ

Sus scrofa liaodongensis: 串刺しナンバリング:改訂したけど、ウミスズメの黒焼きではありません。

遂にはワンライナーまで出る始末だよ!

Twitter / @市川せうぞー: ruby -e ‘s=1;e=80;m=8;p=(( …

外人さんにもお勧めだよ!w

Adobe Forums: I need to number 20,000 tickets in…

串刺し学会なんてできてるよ!(^^;

いやぁ…極東のちっちゃい島の勉強会、すげぇなぁ…すごいもの見たなぁ…

串刺しナンバリングだけでこんなに違うやり方があるなんてなぁ…

というわけで、人前で喋ろうぜ!

どういう化学反応が起きるか、分らないから!!いらんいらんおとな毛なんて!!!

(しかしほんと、皆さん凄い。ワタシもScript書けるようになるぞーがんばるぞーって気になりました)

【東京】DTPの勉強会 特別編第2回

ラベルや日付を維持したまま、フォルダ構造だけを複製する(Mac)&AppleScriptで放り込むだけで実行できるよ!

$
0
0

たまーにあるんです。

深い階層のフォルダ構造だけ維持して、中身のファイルはいらない、って時が。

でApplescriptとか、shellでfindとか調べてたんですが、もっとカンタンなのがありました。

日付もラベルも維持したまま複製します!

以下のようなフォルダを作りました。ファイルが少し入ってますが、これは要らない。フォルダだけ欲しい。

SS 2013-05-01 12.47.41

ターミナルでコマンド一発です。

rsync -arE --include "*/" --exclude "*" コピー元フォルダ名 コピー先フォルダ名

たとえば、デスクトップにある「moto」フォルダ(上の画像)をフォルダのみコピーしたい場合

rsync -arE --include "*/" --exclude "*" ~/Desktop/moto ~/Desktop/moto2

とすると、デスクトップにmoto2フォルダを作ってその中にmotoフォルダをフォルダ構造のみまるっとコピーします。

SS 2013-05-01 12.59.55

ファイルはコピーされずにフォルダがラベル・日付込みで複製できました!

(パッケージ類はコピーされちゃいます。.pkgや.app、.keynote等…入稿データには入ってる確率は低いだろう…w)

ラベル属性はイラネ、って時は、rsync -arE を rsync -ar にしてください。

年に数回だけちょうべんり!

(かな? ファイルをいじるので、自己責任ですお)

AppleScriptでくるんで使いやすく…

またもやTLで教わりつつ… @md5500氏が作ったスクリプトを元に自分専用ぽく作ってみました。

on open dropFolder
	tell application "Finder"
		set fName to name of (item 1 of dropFolder)
		set fPath to folder of (item 1 of dropFolder)

		if class of ((properties of (item 1 of dropFolder)) as record) is not folder then
			display alert "フォルダではありません。" & return & "構造をコピーするフォルダをドロップしてください" as warning
		else
			set bFolder to my inputFoldername(fName, fPath) as Unicode text
			set aFolder to dropFolder as Unicode text
			my main(aFolder, bFolder)

		end if

	end tell
end open

on main(aFolder, bFolder)
	set aFolderPosix to quoted form of POSIX path of aFolder
	set bFolderPosix to quoted form of POSIX path of bFolder
	do shell script "rsync -arE --include \"*/\" --exclude \"*\" " & aFolderPosix & " " & bFolderPosix
end main

on inputFoldername(fName, fPath)
	set nFname to text returned of (display dialog "同階層に作成する" & return & "フォルダ名を入力してください" with icon note default answer fName) as Unicode text

	tell application "Finder"
		try
			make new folder at fPath with properties {name:nFname}
		on error
			display alert "その名前のフォルダがすでにあります。" & return & "名前を入力しなおしてください" as warning
			my inputFoldername(fName, fPath)
		end try
	end tell
end inputFoldername

いつもながら、継ぎ接ぎです。

これにコピーしたいフォルダをドラッグ&ドロップすると、名前を聞いてきますので入力、確定。

すると元フォルダと同じ階層に、フォルダ構造のみコピーしたフォルダができます。

一応変なことはやってないはずですが使用は自己責任でお願いします。あと「ここ変」って突っ込み歓迎(;´Д`)

DLは以下より。

http://d.pr/f/qIfp(フォルダだけ複製.app)

TLから生まれた、Finder・Bridge連携スクリプト「BridgeOpen」

$
0
0

開いている画像をBridgeで参照する、Photoshop用AppleScriptをがんばって書いてみよう(進化中)でも紹介しています。

Twitter上での
「Finderで見てるフォルダをBridgeで即開ければ便利だよね…」
という何気ない呟きを @md5500 師が形にしてくれたAppleScript「BridgeOpen」

既に一部のDTPerには手放せないスクリプトになっています。

自分の環境に合うようにちょーっとだけ改変してみました。

--	2013-02-12	一部環境で動作しなかった問題を修正
--	2013-03-27   launchを追加

tell application "Finder"
	set thisWindow to target of window 1 as Unicode text
end tell
tell application "Adobe Bridge CS6"
	launch  -- 追加これだけ
	activate
	open thisWindow as alias
end tell

Bridgeが起動していない時に実行すると、いろいろ間に合わないのかBridgeが隠された状態で起動しウインドウが現れないことがありました。

プロセスが起動しているか、していないかを判別する文を加えようと調べていたら面倒くさくなったためw「毎回起動させればいいじゃん、プロセス増えないし」と思ってlaunchを追加したら、起動するまでちゃんと待ってくれるという…

SSDから起動させてるからかもしれません。遅いHDDからだとどうなんだろう。

でも自分の環境で快適に動いているからオールオッケー

…ですよ。別な言い方すると、「他の環境で何が起こってもしらんわ!」です。

そのまま使えるアプリケーション形式にして保存したものがありますのでこちらをどうぞ。

http://d.pr/f/3NCg(BridgeOpen.app.zip)

bridgeopen

適当なところに保存して(Applicationsかな)、こんな風にFinderウインドウのツールバーにドラッグ&ドロップで登録して使います。Bridgeアイコンでも付けておくと分かりやすくていいですねん。

プログラミング無しでFinderからショートカットキーを使ってBridgeを開く記事

これで完璧!! Finderで選択しているものをショートカットキーでBridgeで開く。どんな状態でも!!

$
0
0
FinderとBridgeの連携、このBlogでは何度かやってきました… 超絶便利!Adobe Bridge + DragThingの組み合わせで瞬時にフォルダ内画像を見わたせる! TLから生まれた、Finder・Bridge連携スクリプト「BridgeOpen」 その中の プログラミング無し!Finderで選択した項目をBridgeで開く…ショートカットキーで。 実は。白状しますと。 FinderからBridgeを開く、上のエントリには一点、弱点があります。 ▲カラム表示でフォルダを選択した状態だと… ショートカットキーが反応しません(ノД`) なぜなら、サービスメニュー自体が消えるかられす。れすの。 サービスメニューにショートカットキーを割り当ててるので、当然ショートカット押しても反応しません。 これ、Finderのバグです。 (参考 : Karuku Mac: Finderのカラム表示でサービスメニューが使用できないバグ ) で、しょーがないのでScript Menuに直にショートカット割り当てられないかなーと思っていたら、 こんな素晴らしいものに出会いました。 FastScripts !! 上記URLで落とすと、機能制限アリならFreeで使用できます。買いたくなったらApp Storeで。 高機能版Script Menuです。 ▲メニューに置いて… ▼メインメニュー ▼感涙のScript Shortcutsメニュー ユーザースクリプトフォルダにFinderフォルダ作って、BridgeOpenスクリプトを入れ、ショートカット割り当てればいーーーーーんですよ!!!!!! BridgeOpen.scpt ↑FastScript用に改修したBridgeOpenです。これを置いてくださいなっと。 -- 2013-02-12 一部環境で動作しなかった問題を修正 -- 2013-03-27 launchを追加 -- 2013-10-01 FastScripts用に改修&強制Desktop tell application "Finder" set thisItemList to selection as alias list if thisItemList is {} then set thisItemList to desktop end if end tell tell application "Adobe Bridge CC" launch activate open item 1 of thisItemList as alias end tell 何かの拍子にエラー吐くんで…もっときちんとしたらまたここに掲載します…(20131002 0:17こっそり改修) フォルダを選択して使うとそのフォルダの内容を、ファイルを選択しているときはそのファイルを内包するフォルダの中身を開きます。複数選択しているときはABC順の一番最初を開きます。何も選択していないときは強制的にDesktopを開きます。 .workflowでも実行できるので、Automatorで好きなように作っちゃってもOK。 ▲これをワークフローとして/Users/アカウント名/Library/Scripts/Finder/に保存   その他にもAppleScriptにショートカットキー割り当てられたら便利だなーと思っていたんですが、 マジ便利 お試しくださいませ!!

Adobe Bridgeと各種アプリを連携させる「超かんたんな」AppleScript!更新!

$
0
0

色調補正の「やり過ぎ防止」に効く、レイヤー表示・非表示自動化スクリプト!お勧め!


PhotoshopレイヤーマスクをCommand+1でさっとトグル表示する!マスクカラーもショートカットで3色切り替え!するマクロ詰め合わせ #keyboardmaestro