に投稿

Object.keys()が使えない

こんな関数を用意してやる。

var getKeys = function(associativeArrayObject) {
  var arrayWithKeys=[], associativeArrayObject;
  for (key in associativeArrayObject) {
    // Avoid returning these keys from the Associative Array that are stored in it for some reason
    if (key !== undefined && key !== "toJSONString" && key !== "parseJSON" ) {
      arrayWithKeys.push(key);
    }
  }
  return arrayWithKeys;
}

使い方

getKeys(Object)
に投稿

特定のプロパティを全て返す関数

matchNameが一致するプロパティを再帰で全部返す。何かと便利。

/**
 * 特定のプロパティを返す
 * @param {*} rootObj レイヤーでもコンテンツでもOK
 * @param {*} nestingLevel 0でOK
 * @param {*} matchName 探したいプロパティのmatchName
 * @returns 
 */
function getProp(rootObj, nestingLevel, matchName) {
  var propTo = [];
  dumpPropTree(rootObj, nestingLevel, matchName);
  function dumpPropTree(rootObj, nestingLevel, matchName) {
    var countProps = rootObj.numProperties;
    for (var propIndex = 1; propIndex <= countProps; propIndex++) {
      var prop = rootObj.property(propIndex);
      if (prop.matchName == matchName) {
        propTo.push(prop)
      } else {
        dumpPropTree(prop, nestingLevel + 1, matchName);
      }
      if (propIndex == countProps) return
    }
  }
  return propTo;
}
に投稿

テキストアニメーターの範囲セレクターのオフセットにsetValueできない

var animator1 = selectedLayer.Text.Animators.addProperty("ADBE Text Animator");
var selector1 = animator1.property("ADBE Text Selectors").addProperty("ADBE Text Selector"); // 範囲セレクターを追加
selector1.advanced.units.setValue(2) // 高度タブの単位を一旦「インデックス」に
selector1.property(6).setValue(comp.time, 0) // オフセットにsetValue
selector1.advanced.units.setValue(1) // 「パーセント」に戻す

範囲セレクターの高度タブの単位を「インデックス」にしてやるとできた。あとで「パーセント」に戻せばOK。

に投稿

自作プラグインを配布したら「Couldn’t find main entry point for」エラーが出て動かせない現象が多発した話

【結論】

「プロパティ」>「構成プロパティ」>「C/C++」>「コード生成」>「ランタイムライブラリ」の設定を /MTd にしてビルドすればOK。

続きを読む 自作プラグインを配布したら「Couldn’t find main entry point for」エラーが出て動かせない現象が多発した話
に投稿

画像ファイルをバイナリ化してjsxbinに埋め込み

var f = File("画像ファイルパス");
f.encoding = 'BINARY'
f.open('e');

var binary;
binary = f.read().toSource();

var myFile = new File("~/Desktop/binaryOutput.txt");
myFile.open("w");
myFile.encoding = "UTF-8";
myFile.write(binary);
myFile.close();

$.writeln(binary);

f.close();

上記を実行すると出てくるファイルを開いて (new String(“この部分”) をコピー。コピーしたバイナリを変数に格納。画像ファイルのパスを入れるところにぶち込めば表示される。

これ画像だけじゃなくて ffx とかもバイナリ化して埋め込める気がする。。。jsxbinファイル一個だけ渡すスクリプトかっこよい。

参考 : https://youtu.be/CVvdykFNXAY

追記 : これ使ったほうが早い。https://scriptui.joonas.me/

に投稿

GCP の Gmail API で Token has been expired or revoked.

OAuth 同意画面が外部向けかつ、公開ステータスが「テスト」の場合に発行されるトークンは7日で有効期限が切れてしまうらしい。

公開ステータスを本番環境にすればOK。認証のときに警告が出るけど自分しか使わないので問題ない。(Google による審査が必要です!みたいに言われるけど無視してOK。審査なしでも本番環境に変更は可能)

あとこれ Gmail API 関係ないね。