サーチコンソールの
ツールデータを
このため、
作成した
Google 複数シートの データを マージする スクリプト
以下、
MergeMonthlyData.gs
function execute() { // Merge という名前のシートオブジェクトを取得する。 // シート自体がなければ、新規作成する。 var doc = SpreadsheetApp.getActiveSpreadsheet(); var outputSheetName = "Merge"; var dataSheet = doc.getSheetByName(outputSheetName); if(dataSheet == null) { doc.insertSheet(outputSheetName, 0); dataSheet = doc.getSheetByName(outputSheetName); } // 前回入力値のクリア dataSheet.clear(); // 末尾が4桁の数値で終わることを示す正規表現。 var regexp = /\d{4}$/; var addHeader = true; var sheets = doc.getSheets(); for (i in sheets){ // シート名が正規表現にマッチする場合 if (sheets[i].getSheetName().match(regexp)){ var values = sheets[i].getDataRange().getValues(); if(addHeader) { addHeader = false; } else { // シートに含まれるヘッダ部のdata除去する values.shift(); } //最終行の位置を取得 var endrow = Number(dataSheet.getLastRow()) + 1; //カラムの数を取得する var lastColumn = values[0].length; //行の数を取得する var lastRow = values.length; //データを転記する dataSheet.getRange(endrow,1,lastRow,lastColumn).setValues(values); } } }
説明
シート名の
正規表現に ついて
Search Analytics for Sheets
がスケジュール実行で 作成する バックアップデータの シート名は、 [Apr 2017] 等、
末尾が4桁の 数値で 終わる ため、 正規表現の 後方一致で、 4桁の 数値で 終わる 場合、 マージ対象と しました。 ヘッダ部に
ついて
バックアップシートには、全て ヘッダが 付与されます。
最初に取り込み 対象に なった データの ヘッダ部を Merge シートに 転記し、
次シートからは、ヘッダ部は 読み飛ばすようにしました。 データの
転記方法に ついて
dataSheet#appendRow()
もありますが、 件数が 多いせいか 動作が 遅かったので、
参考記事の内容を 拝借して、 データを 転記するようにしました。
参考
Search Analytics for Sheets
の
データスタジオ側は
シートの
以上です。
コメント