【GAS入門】スプレッドシート自動化で重要な4つのクラスを理解しよう!
公開日:2022年10月6日 更新日:2022年10月11日
記事概要
これからGAS(Google Apps Script)で、Googleスプレッドシート自動化に挑戦したい入門者向けの記事です。
スプレッドシート自動化で重要な4つのクラスについて紹介します。
前提条件
GAS(Google Apps Script)の基礎を身につけていること
もし、基礎に不安がある方は、以下Udemy教材を使うと基礎から学ぶことができるので、そちらの受講をオススメします!
そもそもクラスとは
※ クラスについて理解している人は読み飛ばしてください
GASを学ぶ上においては、クラスを「便利な関数(function)をグループ分けする箱」と理解すると良いかと思います。
もし、詳しく学びたい場合は、以下記事がわかりやすかったので参考にしてみてください。
スプレッドシート自動化で重要な4つのクラス
以下、4つが重要なクラスとそれぞれの概要です。
- SpreadsheetAppクラス
スプレッドシートファイルのデータを管理するクラスです。例えば、スプレッドシートファイルの作成・取得・削除などができます。
- Spreadsheetクラス
スプレッドシートのデータ(シート、スプレッドシートの名前、アクセス権限など)を管理するクラスです。例えば、スプレットシートのファイル名の変更、シートの作成・取得・削除などができます。
- Sheetクラス
シートのデータ(シート名、セルなど)を管理するクラスです。例えば、シート名の変更、行の追加・削除、選択した範囲のセルの取得などができます。
- Rangeクラス
選択した範囲のセルのデータを管理するクラスです。例えば、セルの値を取得・変更することができます。
自動化例 - 株価時系列スプレッドシートの検索
概要
- 開始日と終了日を入力して「表示する」を実行します。
- 「開始月-開始日_終了月-終了日」の形式で指定した日付の時系列株価シートが自動生成されます。
デモ
動作確認の方法
- 「株価時系列データ検索」のスプレッドシートを開きます↓
- 自分のGoogleドライブにコピーする
- メニュー > ファイル > コピーを作成
- 「表示する」をクリックすると株価検索ができます。
GASスクリプトの確認方法
- Google Apps Scriptのコードを確認する
- メニュー > 拡張機能 > Apps Script
GASスクリプト
GASスクリプト解説
現在開いているSpreadsheetクラスのオブジェクを取得して、変数spreadsheetに格納しています。
- SpreadsheetApp.getActiveSpreadsheet()
- 現在開いているSpreadsheetクラスを取得します。
- 戻り値:Spreadsheet - 現在開いているSpreadsheetクラスのオブジェクト。
dataシートを取得して、変数sheetに格納しています。
- Spreadsheet.getSheetByName(name)
- 指定された名前(name)のSheetクラスを返します。
- 戻り値:Sheet - 指定した名前のシート。
検索条件の開始日、終了日と株価時系列データを取得します。
- 検索条件
- 株価時系列
- Sheet.getRange(a1Notation)
- A1 表記または R1C1 表記で指定された範囲を返します。
- 戻り値:Range - 指定したロケーションの範囲。
検索条件(開始日、終了日)に合致する株価時系列の配列を生成して、変数stockValuesに格納します。
- Range.getValues()
- この範囲の値の長方形のグリッドを返します。
- 戻り値:Object[][] - 2次元の値の配列。
- Array.prototype.filter()
- 配列の中から、提供された関数で実装されたテストに合格した要素のみを抽出したシャローコピーを作成します。
- 戻り値:「startDate <= value[0] && value[0] <= endDate」がtrueになる配列の要素。
- 補足:今回の場合だと、「開始日と終了日の範囲に入る株価時系列データ」の配列stockValuesができます。
検索条件の開始日、終了日を使って、「開始月-開始日_終了月-終了日」というシート名の文字列を生成して、変数sheetNameに格納します。
- 例えば、検索条件で、開始日:9月6日、終了日:9月30日の場合は「9-6_9-30」というシート名が生成されます。
検索結果シートが既にあったら削除します。シート名が重複するとエラーが発生するため。
- Spreadsheet.deleteSheet(sheet)
- 指定したシートを削除します。
- 戻り値:無し
ヘッダー行「日付, 始値, 高値, 安値, 終値, 出来高, 調整後終値*」の配列を取得して、変数headersに格納します。
ヘッダー行headersを株価時系列配列の先頭に追加します。
- Array.prototype.unshift()
- 配列の最初に 1 つ以上の要素を追加し、新しい配列の長さを返します。
- 戻り値:メソッドを呼び出した後のオブジェクトの新しい length プロパティの値です
検索結果を格納するシートをsheetNameで作成します。
- Spreadsheet.insertSheet(sheetName)
- 新しいスプレッドシートを指定された名前で挿入します。新しいシートがアクティブなシートになります。
- 戻り値:Sheet - 新しいシート
検索結果の貼り付け範囲を何行目から何行目からになるのか計算してます
- 「startIndex + stockValues.length - 1」で最終行を計算してます。
- 「-1」はヘッダー行の分を減らしています。
R1C1表記の文字列(rangeStr)で、検索結果データを格納する範囲を取得し、変数resultDataRangeに格納します。
検索結果を格納する範囲(resultDataRange)に検索結果(stockValues)を設定します。
- Range.setValues(values)
- 値の四角形のグリッドを設定します(この範囲の配列とvalues配列を一致させる必要があります)
- 戻り値:Range - チェーン用の範囲。
format関数を使って、検索結果を格納するシートに色をつけて見やすくします。
resultSheetのシートをアクティブ(選択状態)にします。
- Spreadsheet.setActiveSheet(sheet)
- 対象のシートを、スプレッドシート内の有効なシートとして設定します。
- 戻り値:Sheet - アクティブなシート。
まとめ
- スプレッドシート自動化で重要な4つのクラス
- その4つのクラスを使ったプログラム例として「株価時系列スプレッドシートの検索」
を扱いました。
工夫次第で他にも色々とスプレッドシートの自動化ができますので、ぜひ、色々と挑戦して見てください。
[宣伝] GASプログラミング入門の教材 - Udemy
- 2023年11月時点で、約3,000人の受講生を獲得し、「Udemy Business」に選定されてます。
- 「Udemy Business」とは、Udemyが「企業研修」向けに提供しているサービスのことです。
- Udemyで販売している全ての講座の中から、「企業研修」に提供できる高品質な講座をレビューや内容を加味して厳選していることが特徴のサービスです。
- その「Udemy Business」で、このGAS講座は採用されております。
- 教材の詳細は、以下のUdemyに記載しておりますので内容ご確認ください
- 以下のバナーから購入すると、通常、定価27,800円が1,500円に割引される特別クーポンが適用されます!
- 有効期限は、です。