青果物卸売市場調査(日別調査)のデータを自動取得してスプレッドシートに記録する GAS (Google Apps Script) を作成してみました。
元となるデータは農林水産省が公表しているものですが、(おそらく)国外からのアクセス制限が設けられているようで GAS で直接取得することができません(403 ERROR になります)。そこで cultivationdata.net の Web API を利用します。JSON 形式でデータを取得し、スプレッドシートに保存します。非常に便利ですねぇ(笑)。
・スプレッドシートの準備
1行目に見出しを作ります。A 列から H 列に「日付」「都市名」「品目コード」「産地コード」「数量 (Kg)」「価格 (円/Kg)」「対前日比数量 (%)」「対前日比価格 (%)」となります。
シート名は「data」としています。
・GAS スクリプトの作成
今回は「主要卸売市場計」の「野菜」から「生しいたけ」(品目名)の「総量」(産地名)を取得します。
function getWmrData() { let url = "https://api.cultivationdata.net/wmr?cc=0000&cat=v"; //「主要卸売市場計」「野菜」 //JSONデータの取得 let response = ""; try { response = UrlFetchApp.fetch(url); } catch(e) { return response; } let data = JSON.parse(response.getContentText()); if(data["Error"] == "都市のデータが見つかりませんでした。") { return } let wmr = []; //品目名「生しいたけ」 //産地名「総量」 wmr.push(data["Date"]); //日付 wmr.push(data["CityName"]); //都市名 wmr.push(data["生しいたけ"]["ItemCode"]); //品目コード wmr.push(data["生しいたけ"]["総量"]["ProductionAreaCode"]); //産地コード wmr.push(data["生しいたけ"]["総量"]["TradingVolume"]); //数量 (Kg) wmr.push(data["生しいたけ"]["総量"]["AveragePrice"]); //価格 (円/Kg) wmr.push(data["生しいたけ"]["総量"]["VolumeVersusPreviousDay"]); //対前日比数量 (%) wmr.push(data["生しいたけ"]["総量"]["PriceVersusPreviousDay"]); //対前日比価格 (%) return wmr; } function setWmrData() { const spreadsheet = SpreadsheetApp.openById("スプレッドシート ID"); const sheet = spreadsheet.getSheetByName("data"); let lastRow = sheet.getLastRow(); if(getWmrData() != null) { //900行以上なら1行追加 if(lastRow >= 900) { sheet.insertRows(lastRow + 1); } let wmrData = getWmrData(); if(lastRow == 1) { sheet.getRange(lastRow + 1, 1, 1, 8).setValues([wmrData]); } else { let lastDate = sheet.getRange(lastRow, 1).getValue(); //前回の日付 lastDate = Utilities.formatDate(lastDate, "JST", "yyyy/M/d"); //日付が重複しなければスプレッドシートに入力 if(wmrData[0] != lastDate) { sheet.getRange(lastRow + 1, 1, 1, 8).setValues([wmrData]); } } } }
34行目の「スプレッドシート ID」を書き加えてください。
ちなみに、別のデータを取得したい場合は、2行目の「0000」「v」部分、及び23行目から28行目「生しいたけ」「総量」部分を書き換えてください。
・実行結果
トリガーを設定して毎日 setWmrData 関数を実行した結果が次の画像になります。8/14のデータが抜けているのは休市日のためです。
***
ということで、GAS による cultivationdata.net の Web API を利用した青果物卸売市場調査(日別調査)の自動取得方法でした。
青果物市況情報についても Web API がありますので似たような GAS で取得が可能です。
ご参考になれば幸いです。
詳解! Google Apps Script完全入門 [第3版]
by SimpleImageLink
・関連投稿
青果物卸売市場調査(日別調査)を JSON 形式で取得する Web API を作りました。