また CommuttyIT(元Magicode) で投稿しました。
GAS でアクセス数集計(Google Search Console 編)
こちら、かなり長い間悩んだものがあります。最初につくったコードは全ページの集計だけできていました。次に特定のページについて条件を絞るときになって「"Message"になっているけど"String"が欲しいんだよね」というエラーが出ていました。
キーポイントは以下です。ここだけ引数が階層化されており、これがうまく読めていないようです。
// 文字検索
if (_search) {
body.dimensionFilterGroups = [{
filters: [{
dimension: 'PAGE',
operator: 'CONTAINS',
expression: _search,
}]
}];
};
ちなみに、ひとまず動いていたときは、以下のようもにしてありました。
// ペイロード部分の作成
const body = {
dimensions: 'DATE',
startDate: dt1.toISOString().match(/^(\d{4}-\d{2}-\d{2})/)[1],
endDate: dt2.toISOString().match(/^(\d{4}-\d{2}-\d{2})/)[1],
};
なんとなくですが、dimensions は文字型でも解釈してくれる、やさしい仕様のようです。
さて、どこがおかしいのか。。
この API のスタブツールは正常に動作していました。クライアントスクリプトで動かしていたので、要求などを解析して、GAS のものと見比べていると、以下の記述に辿りつきました。
// JSON形式での送信を宣言
'content-type': 'application/json',
送信するさいに、JSON であることを明示したら、きれいに動いたわけです。今までは QueryString 構文で解釈されていたようです。エラーメッセージが QueryString がどうのこうのといっていたので。