ごんれのラボ

iOS、Android、Adobe系ソフトの自動化スクリプトのことを書き連ねています。

ドキュメントに使われているが、環境にないフォントの名前をテキストに書き出すJavaScriptを書いた

概要

ドキュメントに使われているけど環境にないフォントはフォント検索を使えば確認できる。

できるんだけど、誰かに伝えるにはキャプチャを撮ったり、自力でフォント名をコピペしたりしないといけなくて、スマートじゃないよね。

そんなわけで、そんなフォントの名前をテキストに書き出すJavaScriptを書いた。

コード

font.name はフォントスタイル(RやDBなど)が重複しちゃっていることがあるんだけど、今回はスルーした。

var doc = app.activeDocument;
var results = [];
for (var i = 0, iLen = doc.fonts.length; i < iLen; i++) {
    if (doc.fonts[i].status != FontStatus.INSTALLED) {
        results.push(doc.fonts[i].name);
    }
}
var writeStr = results.join('\n');
writeStringToFile('~/Desktop/result_' + getNowYMDHMS() + '.txt', writeStr);

/**
 * テキストファイル書き出し
 * @param  {String} filePath      保存先のファイルパス
 * @param  {String} stringToWrite 保存するテキスト
 */
function writeStringToFile(filePath, stringToWrite) {
    var fileObj = new File(filePath);
    if (fileObj) {
        try {
            fileObj.encoding = "UTF-8"
            var flag = fileObj.open("w");
            if (flag == true) {
                fileObj.write(stringToWrite);
            }
        } catch (e) {

        } finally {
            fileObj.close();
        }
    }
}

/**
 * 現在時刻を文字列で取得
 */
function getNowYMDHMS() {
    var dt = new Date();
    var y = dt.getFullYear();
    var m = ('00' + (dt.getMonth()+1)).slice(-2);
    var d = ('00' + dt.getDate()).slice(-2);
    var h = ('00' + dt.getHours()).slice(-2);
    var mm = ('00' + dt.getMinutes()).slice(-2);
    var s = ('00' + dt.getSeconds()).slice(-2);
    var result = y + m + d + h + mm + s;
    return result;
}

使い方

  1. ドキュメントを開く
  2. スクリプトを実行する
  3. デスクトップに result_20200213000220.txt (数値の部分は一意)といったテキストファイルが生成される

最後に

標準機能でテキストに書き出す機能があったらいいのにね