こんにちは、堀井です。
今回はGASの使い方と、GASを使ってスプレッドシートをいじる方法について紹介したいと思います。
最終的にはAPIからデータを取得してスプレッドシートに記述するというところまで行いますので、よろしければ最後までご覧ください。
GASとは
Google Apps Scriptの略で、主にGoogleのサービスを利用した自動化等を行うことができるスクリプト言語です。
JavaScriptを参考にして作られているので、JavaScriptを書いたことのある方であればより簡単に始めることができると思います。
はじめに
GASを利用するために必要なことは以下になります。
・Googleアカウントを作成する
これだけです。
それ以外は全てブラウザ上で完結します。
それでは初めていきましょう。
導入
まずはGoogleドライブから新規でスプレッドシートを作成、開きます。
そして「拡張機能」タブの「Apps Script」を選択します。
するとGASのエディターが表示されます。
ここにコードを書いていくことになります。
出力
まずはお作法通り「hello world」を出力してみます。
myFunctionを以下のように変更します。
function myFunction() {
console.log("hello world")
}
変更が終わったらフロッピーディスクアイコンを選択して保存し、「実行」を選択します。
すると
しっかりと表示されましたね。
スプレッドシートに文字を表示
次にスプレッドシートの最初のセルに文字列を表示してみます。
myFunctionを以下のように変更します。
function myFunction() {
let sheet = SpreadsheetApp.getActiveSheet()
sheet.getRange(1,1).setValue("Hello World")
}
変更が終わったらフロッピーディスクアイコンを選択して保存し、「実行」を選択します。
すると
このような画面が表示されるので、「権限を確認」を選択します。
スプレッドシートを開いているアカウントを選択します。
左下の詳細を選択します。
「無題のプロジェクト(安全ではないページ)に移動」を選択します。
「許可」を選択します。
これで実行完了しました。
スプレッドシートを見てみましょう。
しっかり表示されていることがわかります。
ここで先ほど入力したソースコードについて簡単に説明をします。
ソースコードの説明
let sheet = SpreadsheetApp.getActiveSheet()
スプレッドシートを取得しています。
sheet.getRange(1,1).setValue("Hello World")
スプレッドシートの行1列1に「Hello World」を表示します。
APIのレスポンスをスプレッドシートに表示
最後に実践編ということで天気情報を取得できるAPIを利用して、そのレスポンスをスプレッドシートに表示してみようと思います。
myFunctionを以下のように変更します。
function myFunction() {
let url = 'https://www.jma.go.jp/bosai/forecast/data/overview_forecast/130000.json'
let response = UrlFetchApp.fetch(url)
let json = JSON.parse(response.getContentText())
let sheet = SpreadsheetApp.getActiveSheet()
sheet.getRange(2,1).setValue(json["publishingOffice"])
sheet.getRange(2,2).setValue(json["reportDatetime"])
sheet.getRange(2,3).setValue(json["targetArea"])
sheet.getRange(2,4).setValue(json["headlineText"])
sheet.getRange(2,5).setValue(json["text"])
}
変更が終わったらフロッピーディスクアイコンを選択して保存し、「実行」を選択します。
すると、「スプレッドシートに文字を表示」で表示された「承認が必要です」が表示されますので、先ほどと同じように進めていきます。
これで実行完了しました。
スプレッドシートを見てみましょう。
しっかり表示されていることがわかります。
ここで先ほど入力したソースコードについて簡単に説明をします。
ソースコードの説明
let url = 'https://www.jma.go.jp/bosai/forecast/data/overview_forecast/130000.json'
let response = UrlFetchApp.fetch(url)
let json = JSON.parse(response.getContentText())
APIを実行してJson形式のレスポンスを扱いやすい形にしています。
let sheet = SpreadsheetApp.getActiveSheet()
sheet.getRange(2,1).setValue(json["publishingOffice"])
sheet.getRange(2,2).setValue(json["reportDatetime"])
sheet.getRange(2,3).setValue(json["targetArea"])
sheet.getRange(2,4).setValue(json["headlineText"])
sheet.getRange(2,5).setValue(json["text"])
スプレッドシートの行2に取得結果を表示します。
まとめ
いかがだったでしょうか?
今回はスプレッドシートにAPIのレスポンスを表示するところまでやってみました。
GASは他にも、YoutubeのAPIを利用して動画の情報を定期的にスプレッドシートに保存するようなこともできたりするので、興味を持った方はGASを使ってみてください。
以上、堀井でした。