Illustratorのアートボードをオブジェクト全体に合わせるような機能、時々便利です。

使うシーン:ページ毎(余白を除く)を画像化;商品別でカセット化したInDesignファイルを台紙に配置、等。

var doc = app.activeDocument;
var oldRulerOrigin = doc.viewPreferences.rulerOrigin;
doc.viewPreferences.rulerOrigin = RulerOrigin.PAGE_ORIGIN;
//
var pages = doc.pages;
var len = pages.length;
for (var i = 0; i < len; i++) {
    var page = pages[i];
    var bounds = getBounds(page);//仮に設定されたのはmmの単位とする。
    var minX = bounds[0];
    var maxX = bounds[1];
    var minY = bounds[2];
    var maxY = bounds[3];
    // $.writeln(bounds);
    page.reframe(
        CoordinateSpaces.INNER_COORDINATES,
        // [[x1, y1], [x2, y2]]: 現ページ現在の原点からの相対座標。
        // 単位はpoint。mmから変換する。
        [
            [UnitValue(minX, 'mm').as('pt'), UnitValue(minY, 'mm').as('pt')],
            [UnitValue(maxX, 'mm').as('pt'), UnitValue(maxY, 'mm').as('pt')]
        ]
    );
}
// 元のルーラーの原点に戻す
doc.viewPreferences.rulerOrigin = oldRulerOrigin;
//
function getBounds(page) {
    var minX, minY, maxX, maxY;
    var items = page.pageItems;
    var len = items.length;
    for (var i = 0; i < len; i++) {
        var item = items[i];
        //visibleBounds: 線幅を含む(線の外側の座標)
        if (i === 0) {
            minX = item.visibleBounds[1];
            minY = item.visibleBounds[0];
            maxX = item.visibleBounds[3];
            maxY = item.visibleBounds[2];
        } else {
            var bounds = item.visibleBounds;
            if (bounds[1] < minX) minX = bounds[1];
            if (bounds[0] < minY) minY = bounds[0];
            if (bounds[3] > maxX) maxX = bounds[3];
            if (bounds[2] > maxY) maxY = bounds[2];
        }
    }
    return [minX, maxX, minY, maxY];
}