オーディエンスリスト(顧客データ)の自動アップロード

スクリプトの概要

ディスプレイ広告では、広告主様が保有している顧客データのファイルをアップロードして、オーディエンスリストにインポートできます。
Yahoo!広告 スクリプトでは、このインポート作業を自動化できます。自動アップロードを利用することで、常に最新のデータを活用することができます。

インポートファイルの作成について

インポートファイルの作成方法については、こちらのヘルプをご覧ください。

本ページでは、オーディエンスリスト(顧客データ)を自動でアップロードするスクリプトを以下の2パターンご紹介します。
パターン1:Googleドライブ上に置いたファイルから自動でアップロードする場合
パターン2:Googleスプレッドシートからアップロードする場合

必要な設定

共通

1. Yahoo!広告スクリプトとGoogleアカウントを連携します

 詳しくはGoogleアカウントとの連携を確認してください。
 ※すでに連携済みの方は次のステップからご設定ください。

2. 管理画面上でサイトリターゲティングIDを確認してメモしておきます

 ※サイトリターゲティングIDの確認についての詳細はこちらのヘルプをご覧ください
サイトリターゲティングID

3. 管理画面上でオーディエンスリストIDを確認してメモしておきます

 ※オーディエンスリストIDの確認についての詳細はこちらのヘルプをご覧ください
オーディエンスリストID

パターン1:Googleドライブ上のファイルからアップロードする場合

1. Googleドライブにオーディエンスリスト(顧客データ)インポート用のファイルをアップロードします
 オーディエンスリスト(顧客データ)インポート用のファイルの仕様は、こちらのヘルプをご確認ください。

2. Googleドライブにアップロードした対象のファイルIDを取得します
 詳しくはGoogleドライブのファイルIDの取得方法をご確認ください。

パターン2:Googleスプレッドシートからアップロードする場合

1. GoogleスプレッドシートのA列に、下記のように顧客データを記載します(以下の例はaaid)
顧客データを記載
2. 1のスプレッドシートIDを取得します
 詳しくはGoogleスプレッドシートIDの取得方法をご覧ください。

サンプルコード

下記のスクリプトを、灰色のコメント部分も含めてコピーしてスクリプトの入力画面に貼り付け、スクリプト内に記載のある利用方法に沿って定数を設定してください。

パターン1:Googleドライブ上のファイルからアップロードする場合


/*
■スクリプト内容
指定したGoogleドライブのファイルから、オーディエンスリスト(顧客データ)をアップロードします。
■利用方法
1.当スクリプトを、ディスプレイ広告のスクリプトとしてください。
2.定数を以下のように設定してください。
■定数
・FLAG_MAIL:結果をメール送信するならtrue、しないならfalse
・MAIL_TO:メール送信先のYahoo! BusinessID
・MAIL_TITLE:メールタイトル
・RETARGETING_TAGID:管理画面上でサイトリターゲティングIDを確認して指定
・AUDIENCE_LISTID:管理画面上でオーディエンスリストIDを確認して指定
・FILE_ID:Googleドライブ上のファイルIDを指定(参考:https://ads-developers.yahoo.co.jp/ja/ads-script/post/30390362.html#title-fileId)
・UPLOAD_TYPE:IDFA、AAID、MAIL_ADDRESSの3つが利用できます。詳細はこちら→https://ads-developers.yahoo.co.jp/ja/ads-script/product-guide/reference/enums/display.AudienceListServiceUploadUserListUploadType.html
・COMPRESS_TYPE:圧縮なしの場合は「NONE」、ZIP形式で圧縮している場合は「ZIP」
*/
const FLAG_MAIL = true;
const MAIL_TO = ['Yahoo! BusinessID'];
let MAIL_TITLE = '【Yahoo!広告 Script】オーディエンスリスト自動アップロード';
const RETARGETING_TAGID = '1A2B3C4D5E';
const AUDIENCE_LISTID = 1234567890;
const FILE_ID = '11111AAAAAbbbbb_-222222BBBBBccccc';
const UPLOAD_TYPE = 'AAID';
const COMPRESS_TYPE = 'NONE';
function main() {
  const accountId = AdsUtilities.getCurrentAccountId();
  try {
    const fileData = DriveApp.getFileById(FILE_ID).getBlob().getBytes();
    let uploadList = Display.AudienceListService.uploadUserList(accountId, RETARGETING_TAGID, AUDIENCE_LISTID, UPLOAD_TYPE, COMPRESS_TYPE, fileData).rval;
    if (uploadList.values[0].operationSucceeded) {
      sendEmail('オーディエンスリストの自動アップロードが完了しました。');
    } else {
      throw new Error('アップロード時にエラーが発生しました');
    }
  } catch (error) {
    MAIL_TITLE = '!!エラー!!' + MAIL_TITLE;
    sendEmail('オーディエンスリストの自動アップロードでエラーが発生しています!!詳細は管理画面のログをご確認ください。\n' + error);
  }
}
function sendEmail(text) {
  if (FLAG_MAIL) {
    MailApp.sendEmail({
      to: MAIL_TO,
      subject: MAIL_TITLE,
      body: text,
    });
  } else {
    //メール送信しない場合はログ出力
    Logger.log(text);
  }
}

パターン2:Googleスプレッドシートからアップロードする場合


/*
■スクリプト内容
指定したGoogleスプレッドシートから、オーディエンスリスト(顧客データ)をアップロードします。
■利用方法
1.当スクリプトを、ディスプレイ広告のスクリプトとしてください。
2.定数を以下のように設定してください。
■定数
・FLAG_MAIL:結果をメール送信するならtrue、しないならfalse
・MAIL_TO:メール送信先のYahoo! BusinessID
・MAIL_TITLE:メールタイトル
・RETARGETING_TAGID:管理画面上でサイトリターゲティングIDを確認して指定
・AUDIENCE_LISTID:管理画面上でオーディエンスリストIDを確認して指定
・SPREAD_SHEET_ID //スプレットシートIDを指定(参考:https://ads-developers.yahoo.co.jp/ja/ads-script/post/30390362.html#ssid)
・SHEET_NAME //スプレッドシートのシート名
・UPLOAD_TYPE:IDFA、AAID、MAIL_ADDRESSの3つが利用できます。詳細はこちら→https://ads-developers.yahoo.co.jp/ja/ads-script/product-guide/reference/enums/display.AudienceListServiceUploadUserListUploadType.html
・COMPRESS_TYPE:圧縮なしの場合は「NONE」、ZIP形式で圧縮している場合は「ZIP」
*/
const FLAG_MAIL = true;
const MAIL_TO = ['Yahoo! BusinessID'];
let MAIL_TITLE = '【Yahoo!広告 Script】オーディエンスリスト自動アップロード';
const RETARGETING_TAGID = '1A2B3C4D5E';
const AUDIENCE_LISTID = 1234567890;
const SPREAD_SHEET_ID = 'スプレッドシートID';
const SPREAD_SHEET_NAME = 'シート1'
const UPLOAD_TYPE = 'AAID';
const COMPRESS_TYPE = 'NONE';
function main() {
  const accountId = AdsUtilities.getCurrentAccountId();
  try {
    let sh = SpreadsheetApp.openById(SPREAD_SHEET_ID).getSheetByName(SPREAD_SHEET_NAME);
    let ssDataArray = sh.getDataRange().getValues();
    let fileContent = '';
    ssDataArray.forEach(row => {
      fileContent += row[0] + '\n';
    });
    let blob = Utilities.newBlob(Buffer.from(fileContent, 'utf-8'));
    let uploadList = Display.AudienceListService.uploadUserList(accountId, RETARGETING_TAGID, AUDIENCE_LISTID, UPLOAD_TYPE, COMPRESS_TYPE, blob).rval;
    if (uploadList.values[0].operationSucceeded) {
      sendEmail('オーディエンスリストの自動アップロードが完了しました。');
    } else {
      throw new Error('アップロード時にエラーが発生しました');
    }
  } catch (error) {
    MAIL_TITLE = '!!エラー!!' + MAIL_TITLE;
    sendEmail('オーディエンスリストの自動アップロードでエラーが発生しています!!詳細は管理画面のログをご確認ください。\n' + error);
  }
}
function sendEmail(text) {
  if (FLAG_MAIL) {
    MailApp.sendEmail({
      to: MAIL_TO,
      subject: MAIL_TITLE,
      body: text,
    });
  } else {
    //メール送信しない場合はログ出力
    Logger.log(text);
  }
}

結果確認

広告管理画面からオーディエンスリストを確認した際、「ユーザーサイズ」にアップロードした件数が反映されていれば完了です。

ヒント

オーディエンスリストを作成した後、ユーザーサイズが確認できるまで最大で48時間程度かかる場合があります。

管理画面の例
ユーザーサイズの確認