NHKが提供している番組表APIを利用して、スプレッドシートに番組表を書き出すGoogle Apps Scriptです。見たい・録画したい番組を探す時などにどうぞ。
特にありません。GASの実行環境としてスプレッドシートを利用します。
NHKのAPIポータルでユーザー登録し、APIキーを発行してください。
発行されたAPIキーをスクリプトの「事前設定エリア」にセットします。
上のメニューにある「スクリプト実行」から「今日のNHK番組表を取得する」を実行します。
シートに番組表が書き出されます。
書き出される項目は以下の通りです。
空欄の項目があったり、出演者の記述方法に統一感がなかったりするのがちょっと残念ですね。
このAPIは「視聴機会の増大」を目的として公開されているそうです。
/**
* このスクリプトの説明、使い方はこちら。
* https://myfunc.jp/items/00098/index.html
*/
function onOpen() {
// スプレッドシートを開いたときに実行される関数
// UIの取得
const ui = SpreadsheetApp.getUi()
// メニューの表示名
const menu = ui.createMenu('スクリプト実行');
// メニューに追加するボタン
menu.addItem('今日のNHK番組表を取得する', 'get_nhk_programs');
// メニューを画面に追加する
menu.addToUi();
}
function get_nhk_programs() {
// ########## 事前設定エリア ココから ##########
// NHK番組表APIにユーザー登録し、発行したAPIキーをセットしてください
const api_key = '***************************';
// ########## 事前設定エリア ココまで ##########
// スクリプトを実行した日の番組表を取得するので、本日の日付を取得
const today = Utilities.formatDate(new Date(), 'JST', 'yyyy-MM-dd');
// リクエストURLの組み立て。東京(130)のTV番組を対象にしています。
const url = 'https://api.nhk.or.jp/v2/pg/list/130/tv/' + today + '.json?key=' + api_key;
// APIにアクセスしデータを取得する
const response = UrlFetchApp.fetch(url);
// JSON形式で返ってくるので、操作しやすいようオブジェクト形式に変換する
const json = JSON.parse(response);
// 番組データはキー:listに入っているので取得する
const programs = json['list'];
// 総合、教育、BSなど、チャンネルごとにキーが異なる。1つずつ取得するためにキーを取り出す。
const ch = Object.keys(programs);
// シートに書き込み用の配列を宣言
const result = [];
// 1チャンネルずつループする
for (let i = 0; i < ch.length; i++) {
// チャンネルごとに番組を取得する
for (let j = 0; j < programs[ch[i]].length; j++) {
// 書き込み用の配列に追加する
result.push([
programs[ch[i]][j]['service']['name'],
programs[ch[i]][j]['start_time'],
programs[ch[i]][j]['end_time'],
programs[ch[i]][j]['title'],
programs[ch[i]][j]['subtitle'],
programs[ch[i]][j]['content'],
programs[ch[i]][j]['act']
])
}
}
// アクティブなスプレッドシートのオブジェクトを取得
const ss = SpreadsheetApp.getActiveSpreadsheet();
// アクティブなシートオブジェクトを取得
const sheet = ss.getActiveSheet();
// 項目名を追加する
result.unshift(['チャンネル', '開始日時', '終了日時', 'タイトル', 'サブタイトル', 'コンテンツ', '出演者']);
// 書き込むデータに応じて範囲オブジェクトを取得する
const range = sheet.getRange(1, 1, result.length, result[0].length);
// 番組表データをシートに書き込む
range.setValues(result);
}
Google Public DNSを利用して、指定したタイプ、ラベルのリソースレコードを取得するGoogle Apps Scriptです。登録値の確認や変更時の反映確認に使えるかも。
気象庁が公開しているJSONファイルから今日、明日、明後日の天気予報を取得するGoogle Apps Scriptです。
指定した地域の天気予報を取得し、明日が猛暑日の予想であればメールで通知するGoogle Apps Scriptです。遠方に住んでいる親類に熱中症予防を呼びかけるきっかけにどうぞ。