Skip to content

Instantly share code, notes, and snippets.

@milligramme
Created September 21, 2010 01:37
Show Gist options
  • Save milligramme/589019 to your computer and use it in GitHub Desktop.
Save milligramme/589019 to your computer and use it in GitHub Desktop.
//inddドキュメント内の[段落スタイルなし]の段落にスタイルをあてる
var doc=app.documents[0];
var storyObj=doc.stories;
for(var i=0; i < storyObj.length; i++){
var paraObj=storyObj[i].paragraphs;
for(var ii=0; ii < paraObj.length; ii++){
if(paraObj[ii].appliedParagraphStyle.name=="[段落スタイルなし]"){
main();
}
}
}
function main(){
//$.writeln("before_"+getObjectKey(paraObj[ii]).length);
//とりあえず段落スタイル作る
var pstyle=doc.paragraphStyles.add();
//参照渡しでないオブジェクトの複製をつくって
//不要なプロパティをあらかじめ削除
var cloneObj=creatClone(paraObj[ii].insertionPoints[0]);
delete cloneObj.index;
delete cloneObj.parent;
delete cloneObj.properties;
//手動カーニングのとき"Manual"を戻そうとするとエラーになるのでそれ以外に
// "Metrics - Roman Only"(和文等幅), "Metrics", "Optical", "None"
if(cloneObj.kerningMethod=="Manual"){
cloneObj.kerningMethod="None";
}
var prop=getObjectKey(cloneObj);
for(var iP=prop.length-1; iP >= 0; iP--){
//段落スタイルに使えるプロパティかkeyをチェックする
//okなら段落スタイルに当てていく
try{
pstyle[prop[iP]]=cloneObj[prop[iP]];
}
catch(e){//$.writeln("import_err__"+[prop[iP]]);
}
}
if(pstyle){
paraObj[ii].appliedParagraphStyle=pstyle;
//$.writeln("after_"+getObjectKey(pstyle).length);
}
}
//オブジェクトのプロパティのkeyを配列でかえす
function getObjectKey(obj){
var arr=[];
for(var i in obj){
arr.push(i);
}
return arr;
}
//ベース段落から不要なものを削除する用のオブジェクトの分身を作成
function creatClone(srcObj){
var newObj={}
var obj={};
for(var i in srcObj){
try{
obj[i]=uneval(srcObj[i])
for(var i in obj){
newObj[i]=eval(obj[i])
}
}catch(e){}
}
return newObj
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment