包括免許更新

スプレッドシートコピー

docs.google.com

f:id:imabari_ehime:20211203004155p:plain

Apps Scriptを起動

f:id:imabari_ehime:20211203004412p:plain

実行

f:id:imabari_ehime:20211203004334p:plain

権限を確認

f:id:imabari_ehime:20211203004623p:plain

アカウントを選ぶ

詳細

f:id:imabari_ehime:20211203005216p:plain

rakuten-pref-musen(安全ではないページ)に移動

許可

トリガー

f:id:imabari_ehime:20211203005429p:plain

画面の通りトリガーを追加

f:id:imabari_ehime:20211203003636p:plain

f:id:imabari_ehime:20211203003706p:plain

GAS

function fetch_musen() {

  // シート名
  const name = "data";

  // 都道府県名
  const ken = "岡山県";

  // ※IT=X Xの部分を変更
  // X は 所轄総合通信局の項目値 下記参照
  // https://www.tele.soumu.go.jp/resource/j/musen/webapi/mw_code.pdf
  const url = "https://www.tele.soumu.go.jp/musen/list?ST=1&DA=1&SC=1&DC=1&OF=2&OW=FB_H&IT=F&NA=%8Ay%93V%83%82%83o%83C%83%8B";

  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 result = ary.filter(value => value[0] == ken);

  // console.log(ary);

  // シート指定
  let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(name);

  sheet.getRange(1, 3).setValue(update);

  // 範囲指定
  let startRow = 2;
  let startCol = 1;
  let numOfRow = result.length;
  let numOfCol = result[0].length;

  let range = sheet.getRange(startRow, startCol, numOfRow, numOfCol);

  range.setValues(result);
}

let pref = ""

function extract(s) {

  m = s.match(/^(.+)\(([0-9,]+)\)/);

  // console.log(m)

  if (m !== null) {

    if (/[都道府県]$/.test(m[1])) {
      pref = m[1];
    };

    let result = m.slice(1, 3);

    result.unshift(pref);

    return result;
  }
}


function cellCopy() {

  let copySheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("musen");

  // ※コピー範囲指定(変更)
  let copyRange = copySheet.getRange(1, 3, 32, 1);
  let pasteRange = copySheet.getRange(1, 4, 32, 1);

  copyRange.copyTo(pasteRange, { contentsOnly: true });

  values = pasteRange.getValues().flat()

  let addSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("list");
  addSheet.appendRow(values);

}