InDesignスクリプトで、ファイルの作成日、更新日を取得する

InDesignスクリプトで、ファイルの作成日、更新日は下記で取得できます。

	fileObj = File.openDialog("ファイルを選択してください");

	var dt = fileObj.modified;	//	更新日の場合
	var dt = fileObj.created;	//	作成日の場合

	var dateObj = new Date(dt);
	var year = dateObj.getFullYear();
	var month = dateObj.getMonth() + 1;
	var date = dateObj.getDate();

InDesign スクリプト ブックのInddファイルのリンクをブックと同じフォルダーのファイルに更新する(改善)

ブックファイルに登録したinddファイルを、ブックファイルと同じフォルダーのファイルに更新するスクリプトを先日作成しましたが、難点はスピードが遅いことでした。

その原因がわかりましたので、ソースを更新します。

「ページとセクションの番号を自動更新する」がデフォルトで有効になっているので、inddファイルを1ファイル更新するごとに自動更新されていました。

 

最初に「ページとセクションの番号を自動更新する」を無効にし、ファイルの更新が完了した後に有効に戻すようにしています。

appBook.automaticPagination=false;

 

スピードはかなり早くなっていると思います。これなら我慢できるかな。

 

function modifyBook(){
    var appBook=app.books.item(0);
    var bookPath=appBook.filePath;
    bookPath = decodeURI(bookPath); //  URLデコード
    var fileList = new Array();
    var fileListNew = new Array();
    var inddFileitem;
	var i = 0;

	appBook.automaticPagination=false;

	var inddFileLen=appBook.bookContents.length;
	var inddFile=appBook.bookContents;

	for (i=0;i<inddFileLen;i++){
		inddFileitem=inddFile.item(i);
		fileList[i]=appBook.bookContents.item(i).fullName.name;
		fileListNew[i]=bookPath+"/"+fileList[i];
		fileListNew[i]=new File(fileListNew[i]); //  /を\に変換
		inddFileitem.replace(fileListNew[i]);
	}
	appBook.automaticPagination=true;
}

InDesign スクリプト ブックのInddファイルのリンクをブックと同じフォルダーのファイルに更新する

InDesignで作業する場合、inddファイルをブックに登録してDTPすると思います。

たとえば、今のデータをそのままバックアップとして残し、inddファイルやブックファイル一式をコピーして作業する場合、注意が必要です。

コピーしたブックファイルからinddファイルを開くと、コピーする前のフォルダーにあるinddが開いてしまいます。

それに気づかずに作業してしまうと、コピー前のinddファイルを編集してしまうことになります。

ブックファイルは、絶対パスでinddファイルを登録しているのです。

この問題を解決するために、ブックファイルに登録したinddファイルを、ブックファイルと同じフォルダーのファイルに更新するスクリプトを作成しました。

InDesignCS5で動作確認済みです。

難点は、時間がかかることでしょうか。

手元の7ファイルで試したところ、2分程度かかりました。(Windows10 pro,i5-3470 3.20GHz, メモリ8GB)

他に何か良い方法があれば、教えてください。

 

function modifyBook(){
    var appBook=app.books.item(0);
    var bookPath=appBook.filePath;
    bookPath = decodeURI(bookPath); //  URLデコード
    var fileList = new Array();
    var fileListNew = new Array();
    var inddFileitem;
	var i = 0;

    var inddFileLen=appBook.bookContents.length;
    var inddFile=appBook.bookContents;

    for (i=0;i<inddFileLen;i++){
		inddFileitem=inddFile.item(i);
		fileList[i]=appBook.bookContents.item(i).fullName.name;
		fileListNew[i]=bookPath+"/"+fileList[i];
		fileListNew[i]=new File(fileListNew[i]); //  /を\に変換
		inddFileitem.replace(fileListNew[i]);
    }
}

Visual Studioでプロジェクト名称を変更する

Visual Studioで、プログラムのファイル名を変更したい、作ったプログラムを流用して作りたいなど、思うことがあります。

普通にファイル名を変更すると、プロジェクトを開けなくなったりしますが、次の手順でプロジェクト名を変更すると、問題なく変更できるようです。

 

プログラムを複製して別のファイルとして作る

1.あらかじめプロジェクトファイルをコピーします。

Visual Studio 2017の場合、\ドキュメント\Visual Studio 2017にプロジェクトファイルがあります。

ソリューションファイルは、変更せずにそのままにします。

2.Visual Studioを開き、ソリューション(.sln)を開きます。

3.「アセンブリ名」と「既定の名前空間」に新しい名前を入力します。

f:id:masatoy1222:20170509010703p:plain

4.画面右のソリューションエクスプローラーで、ソリューション名とプロジェクト名を変更します。
f:id:masatoy1222:20170509010930p:plain
5.ソリューションファイルを保存して閉じます。
6.ソリューションファイル(.slnファイル)が参照するフォルダーを変更します。
ソリューションファイルが保存されている場所に、プロジェクトファイルが保存されているフォルダーがありますので、フォルダー名を変更します。
7.ソリューションファイル(.slnファイル)をテキストエディタで開きます。
8.6行目に”Project”で始まる行があります。ソリューション名およびプロジェクトフォルダーを変更します。
9.ソリューションファイル(.slnファイル)を保存します。
10.Visual Studioソリューション(.sln)を開きます。
11.コードを表示し、名前空間の設定でエラーが表示されている場合は、クリックして表示された吹き出しをクリックすると、自動的に修正されることがります。
12.コードを見て、他に間違いないか、正しく変更されているか確認します。
 
以上で、作業は完了です。 

Visual Studio 2017 Communityをインストールしてみた

Visual Studio 2017がリリースされたということで、Visual Studio 2017からバージョンアップしてみました。

今回もVisual Studio 2017 Communityをインストールします。

 

1.Visual Studioのホームページから、ダウンロードします。

Visual Studio | Developer Tools and Services | Microsoft IDE

 

2.「Visual Studioのダウンロード」をクリックし、「コミュニティ」をクリックします。

f:id:masatoy1222:20170314003532p:plain

 

3.実行ファイルがダウンロードされますので、実行します。

 

4.「続行」をクリックします。

f:id:masatoy1222:20170407000323p:plain

 

5.数分間待つと、下記の画面が表示されます。「インストール」をクリックします。

f:id:masatoy1222:20170407000452p:plain

 

6.インストールが始まります。

f:id:masatoy1222:20170407000613p:plain

 

7.インストールが完了しました。「起動」をクリックしてみましょう。

f:id:masatoy1222:20170407000711p:plain

 

8.「サインイン」をクリックします。

f:id:masatoy1222:20170407000846p:plain

 

9.メールアドレス、パスワードを入力して、[サインイン]をクリックします。

f:id:masatoy1222:20170407001007p:plain

 

10.Visual Studioが起動したら、インストールは完了です。

f:id:masatoy1222:20170407001229p:plain

 

11.Visual Studio 2015のファイルなどを読み込んだ場合、下記の画面が表示されることがあります。

[インストール]をクリックします。

f:id:masatoy1222:20170407004725p:plain

 

12.一度、Visual Studio 2017を終了してから、[インストール]をクリックします。

f:id:masatoy1222:20170407004846p:plain

 

13.インストールにはしばらくかかります。

この画面が表示されたら、[閉じる]をクリックします。

f:id:masatoy1222:20170407004959p:plain

 

 

C#でタイムスタンプ変更ツールを作成する

デジタルビデオカメラで撮影したファイルをパソコンに取り込むと、ファイルのタイムスタンプ(作成日時)が取り込んだ日時に変更されてしまうことがあります。

 

そのタイムスタンプを戻すツールがなかなか見つからなかったので、作ってみました。

 

ここからダウンロードできます。 

ダウンロード

 

使い方は簡単。

起動した画面に、動画をドラッグアンドドロップすると、作成日時を更新日時と同じ設定に変更します。

 f:id:masatoy1222:20161213003543p:plain

改良していきたいので、バグを見つけたり、要望がありましたら、ぜひコメントください。 

対応ファイルは、".m2ts", ".mts", ".wmv",".avi",".mpeg",".mpg",".vob",".mov"です。

 

このツールの作り方は、後日説明しようかと、、、

 

Windowsでプログラミングしてみよう(3) ~C#でフォームを表示してみる~

今回は、Windowsフォームを表示して、文字やボタンを配置してみましょう。

 

1.Visual Studioを起動して、File - New - Projectを選びます。

 

2.Installed - Tempates - Visual C#を選択し、[Windows Forms Application] を選択します。

 

3.[Name] ボックスにプロジェクト名を指定し、[OK] をクリックします。

 

4.次のように画面が表示されます。

  表示されたフォームに、文字や文章を置いていきます。

 

f:id:masatoy1222:20161207003056p:plain

 

5.画面左のウインドウから「Label」を選び、フォームにドラッグアンドドロップします。

f:id:masatoy1222:20161208003640p:plain

f:id:masatoy1222:20161207004100p:plain

 

6.画面右のPropertiesの「Text」に表示させたい文字列を入力します。

f:id:masatoy1222:20161207004945p:plain

 

7.フォームの画面左の名前を変更するには、Formをマウスで選択した後、Propertiesの「Text」の文字列を変更します。

f:id:masatoy1222:20161208004155p:plain

 

8.ボタンを配置するには、画面左のウインドウから「Button」を選び、フォームにドラッグアンドドロップします。

 

f:id:masatoy1222:20161208004916p:plain

 

9.画面右のPropertiesの「Text」にボタンに表示する文字列を入力します。

f:id:masatoy1222:20161208005147p:plain

 

10.[閉じる]ボタンを押したときに、画面を閉じるようにコードを入力します。

[閉じる]ボタンをダブルクリックします。

 

11.”button1_Click()”のところに、画面を閉じるコード”this.Close();"を入力します。

f:id:masatoy1222:20161208010038p:plain

 

12.フォームを表示してみます。画面上部の[Start]をクリックします。

f:id:masatoy1222:20161208010702p:plain

 

13.フォームが表示されます。

[閉じる]をクリックすると、フォームが閉じます。

f:id:masatoy1222:20161208010802p:plain

 

これで、フォームを表示することができました。