GoogleAppsScriptでバリューコマースのレポートをメール送信する

スポンサーリンク

いくつかアフィリエイトASPを使っているのですが、バリューコマースだけ注文発生時のメール通知がなかったのでGoogleAppsScriptからバリューコマースAPIを叩いてメール通知くるようにしました。

スポンサーリンク

バリューコマースとは

いわゆるアフィリエイト・サービス・プロバイダーというところで、様々な広告主の製品・サービスをブログなどで紹介することで成果報酬をゲットできます。

自己アフィリエイトという形で自分で購入する場合にも報酬もらえる(※広告主による)のでいつものつかっているECサイトなどが広告主でいたらお得に買物可能です。

ソースコード

ありがたいことにすでに自分がやりたいことを記事にしてくれている人がいましたのでこちらをそのまま流用しました。

記事の中から変更した場所は2箇所です。

  • 昨日日付処理が抜けてたので追加
  • Slack連携をメール送信に書き換え

4行目と37行目はそれぞれの環境に合わせて書き換えてください。

// 起動するファンクション
function myFunction() {
  // バリューコマース管理画面からbase64エンコードした情報
  var apiToken = '書き換え';
  // token取得
  var tokenParams = {'headers' : {'Authorization' : 'Bearer ' + apiToken}}; 
  var resTokenJson = UrlFetchApp.fetch("https://api.valuecommerce.com/auth/v1/affiliate/token/?grant_type=client_credentials", tokenParams);
  // JavaScriptで扱いやすくするため戻ってきた結果をJsonからJavaScriptのオブジェクトに変換
  var res = JSON.parse(resTokenJson);
  // token情報を抜き出し
  var token = res.resultSet.rowData.bearer_token;
  
  // 取得したTokenを使って注文APIを実行
  var params = {'headers' : {'Authorization' : 'Bearer ' + token}};
  // 前日日付を取得してfrom_dateとto_dateに指定
  var date = new Date(); // 今日日付を取得
  var day = date.getDate(); // 日にちを取得
  date.setDate(day-1); // 1日戻す
  var yesterday = Utilities.formatDate(date, 'Asia/Tokyo', 'yyyy-MM-dd'); // フォーマットを整形
  var resJson = UrlFetchApp.fetch('https://api.valuecommerce.com/report/v2/affiliate/transaction/?from_date=' + yesterday + '&to_date=' + yesterday, params);
  // var resJson = UrlFetchApp.fetch('https://api.valuecommerce.com/report/v2/affiliate/transaction/?from_date=' + "2020-04-25" + '&to_date=' + "2020-04-25", params);
  var res = JSON.parse(resJson);

  // 注文情報を抜き出し
  var orderInfo = "";
  // 注文情報は複数返ってくるのでループ内で注文情報を取得
  for (var cnt in res.resultSet.rowData) {
    // 会社名と報酬額だけを抜け出してカンマ区切りで文字列作成
    orderInfo = orderInfo + res.resultSet.rowData[cnt].merchantName + ' ' + res.resultSet.rowData[cnt].affilPayment + '円\n';
  }
  
  Logger.log(orderInfo);
  
  // 注文がある場合のみメール送信する
  if (orderInfo) {
    // メール送信先 カンマ区切りで追加
    var mailTo = "書き換え";
    // メール件名
    var subject = yesterday + " 注文が発生しました";
    // メール本文
    var body = orderInfo;
    // メール送信
    MailApp.sendEmail(mailTo, subject, body);
  }
}

あとはトリガーで毎朝回せば前日に成果が発生していれば朝メールで届きます。
発生していない日は届きません。

レポートメール

こんな感じで届きます。

コメント

タイトルとURLをコピーしました