Skip to main content
Participating Frequently
June 25, 2020
質問

undefined is not an object

  • June 25, 2020
  • 返信数 1.
  • 1670 ビュー

過去(CS6)に公開されていたスクリプトをそのままInDesign 2020に移植したのですが、件名のエラーで実行できません。このエラー自体は色々な要因で発生しているようですが、原因がわかりませんでした。もしお分かりになる方がいらっしゃればご教示下さい。

 

//Display a "choose folder" dialog box.

if(app.documents.length !==0){
var myFolder=Folder.selectDialog("choose a Folder");
if(myFolder !==null){
myExportPages(myFolder);
}
}
else{
alert("Please oppen a document and try again.");
}

function myExportPages(myFolder){
var myPageName, myFilePath, myFile;
var myDocument=app.activeDocument.name;
var myDocumentName=myDocument.name;
var myDialog=app.dialogs.add();

with(myDialog.dialogColumns.add().dialogRows.add()){
staticTexts.add({staticLabel:"Base name;"});
var myBaseNameField=textEditboxes.add();
}

var myResult=myDialog.show({name:"ExportPages"});

if(myResult===true){
var myBaseName=myBaseNameField.editContents;
//Remove the dialog box from memory.
myDialog.destroy();

for(var counter=0;counter<myDocument.pages.length;counter++){
myPageName=myDocument.pages.item(counter).name;
app.pdfExportPreferences.pageRange=myPageName;

//The name of the exported files will be the base name + the page name + ".pdf".
//If the page name contains a colon ( as it will if the document contains sections),
//then remomve the colon.

var myRegExp=new RegExp(":","gi");
myPageName=myPageName.replace(myFegExp,"_");
myFilePath=myFolder + "/" + myBaseName + "_" + myPageName + ".pdf";
myFile=new File(myFilePath);
myDocument.exportFile(ExportFormat.pdfType,myFile,false);
}
}
else{
myDialog.destroy();
}
}

このトピックへの返信は締め切られました。

返信数 1

yusuke.s
Inspiring
June 25, 2020

卓馬栗33532265さん:

そのまま移植されたわけではなさそうですね。コードに間違いがあり、このままではバージョンに関係なくエラーになって動きません。

開発元から正しいスクリプトを再度ダウンロードなり何なりしていただくのが筋かと思います。

少なくとも、僕から見るとスクリプトに手を加えた跡が見受けられますので、元のスクリプトのライセンスがどうなっているかも気になります。

 

ここでコードの間違い部分を指摘させていただくことは可能ですが、念のため開発元から改めて取得し直し、問題なく動作するかどうかをお試しください。

もし卓馬栗33532265さんが手を加えていらっしゃるようでしたら注意が必要です。前述の通りスクリプトにもプログラムとしてライセンスが設定されているはずです。それをご確認の上改めてご相談ください。

 

Yusuke S.
jdash2000
Inspiring
June 26, 2020
yusuke.s
Inspiring
June 26, 2020

それをご本人から聞きたかったのですが……^^;;

CS4に限らず、Adobeのスクリプティングガイド(最新がCS6)に掲載されているものと酷似しているのは認識していました。

https://www.adobe.com/content/dam/acom/en/devnet/indesign/sdk/cs6/scripting/InDesign_ScriptingGuide_JS_JP.pdf

非常に似たスクリプトがp.51に掲載されています。

 

ただし、タイポが多くこれを見ながら手打ちされた(いわゆる写経、書き写し)されたのではないかなと思った次第です。

しかし「公開されていた」とおっしゃっているので、どこかのウェブサイトで自分のスクリプトとして公開しているページがあるのか、それともそれは勘違いで公式ドキュメントから書き写したものだったのか、それを確かめたかったのでした。

 

また、小さいミスが多数見受けられるため、スクリプトに詳しい方ではないとも感じました。

ですので、公式ドキュメントから拝借する分にはまだしも、ウェブから安易にスクリプトを引用してしまっていないか心配だったのです。

スクリプトはマシンに悪意ある改変を加えることが可能ですから、中身をしっかり確認したり出処を明確にしておかないと危ないんだぞ、ということも言いたかったのでした。

あれーどこから引用した(コピペした・ダウンロードした)んだっけなーという状態だと、万が一スクリプトが原因で大きなトラブルになった際に自分が責任を負う羽目になりかねないので…。

Yusuke S.