所有しているサイトの検索キーワード数を取得してGoogle Spreadsheetに値を記載する
移転しました。
"); // リダイレクト setTimeout("redirect()", 2000); // 2 sec function redirect(){ location.href = url; } // canonical の書き換え var link = document.getElementsByTagName("link")[0]; link.href = url; -->はじめに
所有しているサイトが特定のキーワードでどれくらい検索されているかGoogle Search Consoleで調べてGoogle Spreadsheetに記載して日々計測する必要があったため、その際に行った手順を残しておきます。
検索回数や表示回数を取得できる Google Search Console
Google Search Console(以前は Webmaster tool だった気がします)という以下のURLで、自分が所有しているサイトはどのようなキーワードで検索されたのか?また、そのキーワードで何回表示されて何回クリックされたなどの値が取れます。
以下のような感じで確認できます。
こちらの値をなんとか Google Spreadsheetの方に引っ張ってきて、毎日記録させようと思います。
苦戦しながら Google OAuth2 でリフレッシュトークンなどを取得する
Google Search Console の値を取得するために、GoogleDevelopers の Search Console API(Webmaster Tools API)を使用します。
Search Analytics: query | Search Console API (Webmaster Tools API) | Google Developers
さらにAPIを使用するために、Google OAuthを利用する必要があるのですが、これがややこしい手順を踏む必要があるります。
ただ、そのややこしい手順をまとめてくれているサイトがあるので、以下ページを参考に リフレッシュトークンというやつを取ります。
端的にいうと、このリフレッシュトークンがないと長い間(たとえば3ヶ月など)、バッチなどでPGで自動実行してGoogle Search Consoleの値を取得することができなくなってしまいます。
詳しいトークンの説明は以下に譲ります
上記ページに細くすると以下点に注意が必要です
Google Search Console の scopeは以下 https://www.googleapis.com/auth/webmasters
redirect_url は以下ページに詳しく記載がある。 qiita.com
それではGoogle Search Consoleの値にアクセスして値を取得してみます
Googleにログインして、Google Spreasheet で新しいドキュメントファイルを作成します。
[ツール] - [スクリプトエディタ] を選択して、スクリプトエディタを開きます
以下のソースベースにsite_urlなどをカスタマイズして実行すると
function myFunction() { var opt = { "method" : "POST", "payload" : { "client_id" : GS_CLIENT_ID, // 取得した クライアントID "client_secret" : GS_CLIENT_SECRET, // 取得した クライアントシークレット "refresh_token" : GS_OAUTH_REFRESH_TOKEN, // 取得したリフレッシュトークン "grant_type" : "refresh_token" }, // "muteHttpExceptions" : true }; var res = UrlFetchApp.fetch("https://accounts.google.com/o/oauth2/token", opt); var dat = JSON.parse(res.getContentText()); var accessToken = dat["access_token"]; var filters = []; filters.push({ dimension: "query", operator: "contains", expression: "酒" }) var params = { searchType: "web", startDate: "2016-04-17", endDate: "2016-04-17", dimensions: ["query"], dimensionFilterGroups:[ { filters: filters }, ], } var opt = { "method" : "POST", "payload" :JSON.stringify(params), "contentType": "application/json", "headers" : { "Authorization": "Bearer " + accessToken, }, }; var site_url = "http%3A%2F%2Fexmaple.com%2F"; var res = UrlFetchApp.fetch("https://www.googleapis.com/webmasters/v3/sites/"+ site_url +"/searchAnalytics/query", opt); var content = JSON.parse(res.getContentText()); Logger.log(content); }
ログに以下のようなjson文字列が取得することができます。
{ "rows": [ { "keys": [ "果実酒 飲み放題" ], "clicks": 5.0, "impressions": 26.0, "ctr": 0.19230769230769232, "position": 4.8076923076923075 },
最後に取得した値をGoogle Spreadsheetに記載します。 先ほどのjsonの文字列からJSON.parseなどで必要な値を取得して以下ページを参考に必要な箇所に記載していきます。
[GAS][スプレッドシート]シートに値をセットするには : 逆引きGoogle Apps Script
スクリプトを自動化する
リフレッシュトークンを取得しているので、何度も認証する必要がないため、あとは定期的にトリガーで上記のPGを実行できるようにすれば、毎日値をGoogle Spreadsheetに追記していくことが可能です。