GASで楽天モバイルの包括免許を取得

自己責任でご利用ください。

サンプル

docs.google.com

上記サンプルを開き、メニューの「ファイル」-「コピーを作成」でスプレッドシートスクリプトもコピーできます

スクリプト

// 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;

  }
}