ID

ほとんどの Google 広告エンティティは、識別子を返す getId() メソッドを公開しています。ほとんどの場合、ID は厳密には必要ありませんが、次のような場合に役立ちます。

レポートの操作
ID は、レポートの行を実際の Google 広告エンティティにリンクするのに適した方法です。
外部データストアとのマッピングを維持する
ID ベースの情報がすでに独自のデータベースに保存されている場合があります。
パフォーマンスの向上を求める場合

通常、ID によるデータの取得は他の方法よりも高速です。単一のエンティティを取得するコードも少し簡単になります。

let campaigns = AdsApp.campaigns()
   .withIds([678678])
   .get();
// versus
let campaigns = AdsApp.campaigns()
   .withCondition("Name='My Campaign'")
   .get();

一意性

キャンペーン ID と広告グループ ID は一意です。2 つのキャンペーンまたは広告グループが同じ ID を共有することはありません。ただし、広告とキーワードには複合 ID があります。キーワードの固有識別子は、広告グループ ID とキーワード ID の組み合わせです。同様に、広告の固有識別子は、広告グループ ID と広告 ID の組み合わせです。これは、selector.withIds() の呼び出し方法に影響します。

キャンペーンと広告グループの場合、selector.withIds() は数値の配列を想定しています。

let ids = [123123, 234234, 345345];
let campaignSelector = AdsApp.campaigns().withIds(ids);

ただし、広告とキーワードの場合、selector.withIds() には 2 要素配列の配列が必要です。最初の要素は広告グループ ID です。次のスニペットは、広告グループから 3 つのキーワードを取得します。

let adGroupId = 123123;
let keywordSelector = AdsApp.keywords().withIds([
    [adGroupId, 234234],
    [adGroupId, 345345],
    [adGroupId, 456456]
]);

広告を取得する場合も同じ構造が適用されます。

一時的な ID

複数のオペレーションを含む変更リクエストを処理する場合、API レスポンスを取得するまで完全なリソース名を使用できないため、一時 ID を使用してリソースを相互にリンクすることが必要になる場合があります。一時 ID は -1 から始まる負の整数である必要があります。また、同じ変更リクエスト内で繰り返すことはできません。一時 ID を効果的に使用するには、一時 ID の重複を避けるためのコードを記述する必要があります。

let nextId = -1;

function getNextTempId() {
    const ret = nextId;
    nextId -= 1;
    return ret;
}

getNextTempId を呼び出すたびに、前の値より 1 少ない値が返されます。すべての一時 ID は負の値にする必要があるため、-1 から開始します。

一時 ID は、ジョブや変更リクエストをまたいで記憶されることはありません。前の mutate リクエストで作成されたリソースを参照するには、実際のリソース名を使用します。