[Google Spreadsheet][Google Search Console]アクセス集計をスプレッドシートに転記

また CommuttyIT(元Magicode) で投稿しました。

GAS でアクセス数集計(Google Search Console 編)

こちら、かなり長い間悩んだものがあります。最初につくったコードは全ページの集計だけできていました。次に特定のページについて条件を絞るときになって「"Message"になっているけど"String"が欲しいんだよね」というエラーが出ていました。

キーポイントは以下です。ここだけ引数が階層化されており、これがうまく読めていないようです。

  // 文字検索
  if (_search) {
    body.dimensionFilterGroups = [{
      filters: [{
        dimension'PAGE',
        operator'CONTAINS',
        expression_search,
      }]
    }];
  };

ちなみに、ひとまず動いていたときは、以下のようもにしてありました。

  // ペイロード部分の作成
  const body = {
    dimensions'DATE',
    startDatedt1.toISOString().match(/^(\d{4}-\d{2}-\d{2})/)[1],
    endDatedt2.toISOString().match(/^(\d{4}-\d{2}-\d{2})/)[1],
  };

なんとなくですが、dimensions は文字型でも解釈してくれる、やさしい仕様のようです。

さて、どこがおかしいのか。。

この API のスタブツールは正常に動作していました。クライアントスクリプトで動かしていたので、要求などを解析して、GAS のものと見比べていると、以下の記述に辿りつきました。

      // JSON形式での送信を宣言
      'content-type''application/json',

送信するさいに、JSON であることを明示したら、きれいに動いたわけです。今までは QueryString 構文で解釈されていたようです。エラーメッセージが QueryString がどうのこうのといっていたので。