自己責任でご利用ください。
サンプル
上記サンプルを開き、メニューの「ファイル」-「コピーを作成」でスプレッドシートとスクリプトもコピーできます
スクリプト
// APIより自動取得 // A:都道府県 // B:市区町村 // C:基地局数 // 手動入力 // E:団体コード // F:都道府県 // G:市区町村(VLOOKUPの検索キー) ※非表示 // H:市区町村(郡省略) // 計算式 // I:直近(VLOOKUPでCを並び替え) // J:過去(更新時Iをコピー) ※自動 // K:増減(直近 - 過去) function Rakuten() { // ITを変更 const url = "https://www.tele.soumu.go.jp/musen/list?ST=1&DA=1&SC=1&DC=1&OF=2&OW=FB_H&IT=E&NA=%8Ay%93V%83%82%83o%83C%83%8B"; // 都道府県名 const pref = "奈良県"; // 市区町村の数 + 2 const n = 41; let response = UrlFetchApp.fetch(url).getContentText(); let json = JSON.parse(response); // 更新日 let update = json["musenInformation"]["lastUpdateDate"]; let note = json["musen"][0]["detailInfo"]["note"]; let data = note.split("\\n\\n").slice(1).join(" ").replace(/\\n/g, " ").split(/\s+/); // console.log(data); // 市区町村別にデータ抽出 let ary = data.map(extract); // 指定都道府県名でフィルター let nara = ary.filter(value => value[0] == pref); // シート指定 let sheet = SpreadsheetApp.getActiveSheet(); // 最新 let after = Number(nara[0][2]); // 直近 let before = sheet.getRange(2, 9).getValue(); console.log([after, before]); // 直近から過去にデータを移動 if (before != after) { let copyRange = sheet.getRange(1, 9, n, 1); let pasteRange = sheet.getRange(1, 10, n, 1); copyRange.copyTo(pasteRange, { contentsOnly: true }); } // 直近を最新に更新 sheet.getRange(1, 3).setValue(update); // 範囲指定 let startRow = 2; let startCol = 1; let numOfRow = nara.length; let numOfCol = nara[0].length; let range = sheet.getRange(startRow, startCol, numOfRow, numOfCol); range.setValues(nara); } let temp = "" // 抽出 function extract(s) { m = s.match(/^(.+)\(([0-9,]+)\)/); // console.log(m) if (m !== null) { if (/[都道府県]$/.test(m[1])) { temp = m[1]; }; let result = m.slice(1, 3); result.unshift(temp); return result; } }