この5日間の差は何? InDesignスクリプトのUserJSONDataを紐解く

この記事は【大DTPの勉強部屋】「Saturday online SP 〜眠くなるまで〜」で予定していた内容の1つです。他の件で時間を取られて全然紹介できなかったのでここで書いておこうということですね。スクリプトの解説なのでやや専門的になるのですが、結果だけを使うのであれば誰でもできます。ほとんどの方が知らないと思われInDesignの秘密について書いていますので、よかったら最後まで読んでください。


タイトルの「UserDataJSON」とは、ユーザーの情報を格納していJSON形式のテキストデータです。InDesignでユーザーの情報なんて必要としているのか? と思われるでしょうが、AdobeIDのアカウント画面で自分の画像を登録している場合、InDesignのホーム画面ではその画像が表示されます。また、最近使ったファイルもホーム画面に表示されます。そういった、主InDesignのホーム画面を作成する過程で使用されているデータと考えてよいでしょう。

その内容は次のようなものです(私の場合の例。■のところは非公開)。元々は改行や字下げのないテキストデータなのですが、読みやすいよう改行と字下げを入れています。

{
    "accountStatus":"paid",
    "accountType":"■■■■■",
    "adobeGUID":"■■■■■■■■■■■■■■■■■■■■■■■■@AdobeID",
    "appStartClockTime":"1732715585",
    "appVersion":"20.0.1",
    "buttonInfo":{
        "create_button_newdocs":{
            "shortcut":"Ctrl+N",
            "tip":"新規ドキュメント"
        },
        "create_button_open":{
            "shortcut":"Ctrl+O",
            "tip":"ドキュメントを開く"
        }
    },
    "countryCode":"JP",
    "dontShowAgain":false,
    "firstName":"聡",
    "fnftEnabled":true,
    "hostID":"IDSN",
    "language":"ja_JP",
    "lastName":"大間知",
    "platform":"windows",
    "secondsLeftInTrial":"82141615",
    "sessionGUID":"■■■■■■■■■■■■■■■■■■■■■■■■■■■■",
    "tabs":[{
        "label":"listview_recent_tab_label",
        "list":[],
        "listViewEnabled":true,
        "thumbnailViewEnabled":true,
        "type":"recentfile"
    }],
    "userTrackingEnabled":true
}

ではそれぞれどんな意味なのか、上から順に解説していきます。

accountStatus

アカウントの情報です。私の場合「paid」(支払い済み)になっています。試用版の場合「trial」とかになるんでしょうか? 確認するのが大変なので(それ用AdobeIDを用意しなければならない)推測です。

accountType

アカウントの種類ではないかと推測します。個人版、グループ版、エンタープライズ版など。それぞれの契約をしないと確認できないので不明です。私のアカウントタイプも非公開。(公開して特定されちゃうと困る事態になるかもしれない)

adobeGUID

Adobe内部で管理されている、本当ID。GUIDと略されます。実はログイン時に使用するメールアドレスは変更可能なのです。

adobeGUIDは複数AdobeIDを使用していたりすると目にすることがあります。このページGUIDの記述があります。

Creative Cloud からサインアウトしても Creative Cloud ファイルフォルダーは非表示になりません。フォルダーの名前は、「Creative Cloud ファイル + <アカウントタイプ> + <プロファイル名> + <電子メール> + <GUID>」に変更されます。(例:Creative Cloud ファイル個人アカウント email@abc.com ####@AdobeID)必要に応じてフォルダーの名前を変更できます。

appStartClockTime

InDesignの直近の起動日時。これ1970年1月1日 00:00:00からの経過秒で表されますので、実際の日時を得たい場合は次のようにします。

alert(new Date(1732715585 * 1000));

つまり、私の例(1732715585)では「2024年11月27日 22:53:05」に起動しているということです。日報とかに使えるかも知れませんね。

appVersion

アプリケーションのバージョンです。スクリプトに対応しているアプリケーションの場合、app.versionで取得できますので、これを使う意味はないです。

buttonInfo

これはホーム画面のボタンです。「新規ファイル」「開く」の2つのボタンのことを指しています。私の環境ではツールチップが表示されていないので「tips」の内容を確認できません。確認できる人がいましたら「文言が統一されていないよ」と文句を言ってください(笑)

countryCode

国コードですね。よくベータ機能で「北米地域のユーザーのみ使用できます」とありますが、それと関係しているかもしれません。

dontShowAgain

直訳すると「再び表示しない」なんですが、どこの設定のことかわかりません。

firstName

説明不要。悪用禁止。

fnftEnabled

これは不明です。わかる方がいれば教えてください。

hostID

アプリケーションIDです。「IDSN」InDesignのこと。Illustratorは「ILST」、Dreamweaverは「DRWV」ですね。Photoshopは今インストールしていないのでわかりません。hostIDがあるってことは他のアプリケーションでも同じ情報を内部で取得していると思われます。

language

言語」なんですが、ユーザーインターフェイスの使用言語なのか、「日本語版」という意味なのかわかりません。

lastName

説明不要。悪用禁止。

platform

WindowsかMacかという区分でしょう。Macでは確認していないので「mac」と表示されるかは知りません。

secondsLeftInTrial

直訳すると「試用版になるまでに残された秒数」です。最後に説明します。

sessionGUID

これはわかりません。もし何かあった場合に困るかもしれないので非公開です。adobeGUIDと異なります。

tabs

ホーム画面のタブの情報のようです。この中に「recentfile」とあるので、最近使用したファイルに関する情報のようです。あいにく私は環境設定で「最近使用したファイルの表字数」を0にしているので、詳細は不明です。

userTrackingEnabled

直訳すると「ユーザー追跡を有効にする」なんですが、どこのことかわかりません。Webのアカウント画面のデータとプライバシー設定に、

  • デスクトップアプリケーションの使用状況
  • 製品改善のためのコンテンツ分析

の項目があるのですが、これとは連動していませんでした。


説明は以上です。あまり公開してほしくない項目もあるので、扱う際は注意が必要ですね。

その中で有益なものとして「secondsLeftInTrial」がありますので、このスクリプト例を作成しました。これを使うことで、いちいAdobeサイトに行かなくても有効期限を確認できるはずです。

var ccx = eval("("+app.getCCXUserJSONData()+")");
alert("ライセンスの有効期限は " + tc(ccx.secondsLeftInTrial) + "です");
function tc(a) {
    var d = new Date();
    d.setTime(d.getTime() + a * 1000);
    var s = d.getFullYear() + "/" + ("0" + (d.getMonth() + 1)).substr(-2) + "/" + ("0" + d.getDate()).substr(-2) + " " + 
    ("0" + d.getHours()).substr(-2) + ":" + ("0" + d.getMinutes()).substr(-2) + ":" + ("0" + d.getSeconds()).substr(-2);
    return s;
}

これを実行するとこうなります。

ところが、Adobeのサイトで確認するとこうです。

えー、5日ずれてるやん。これはどういうこと? プログラム間違えてる?(そんなことはなさそう) それともライセンスが切れてもすぐに使えなくならないよう何らかの措置がされてる?

ちょっとこれはライセンスが切れるまで確認できない(これからも延長するしなあ)ので、あくまでも目安としてお使いください。謎だ。