【GAS入門】スプレッドシート自動化で重要な4つのクラスを理解しよう!

Home > TECH BLOG > 【GAS入門】スプレッドシート自動化で重要な4つのクラスを理解しよう!
公開日:2022年10月6日 更新日:2022年10月11日

記事概要


これからGAS(Google Apps Script)で、Googleスプレッドシート自動化に挑戦したい入門者向けの記事です。
スプレッドシート自動化で重要な4つのクラスについて紹介します。

前提条件


GAS(Google Apps Script)の基礎を身につけていること
もし、基礎に不安がある方は、以下Udemy教材を使うと基礎から学ぶことができるので、そちらの受講をオススメします!

そもそもクラスとは


※ クラスについて理解している人は読み飛ばしてください
GASを学ぶ上においては、クラスを「便利な関数(function)をグループ分けする箱」と理解すると良いかと思います。
クラスとは便利な関数(function)をグループ分けする箱
クラスとは便利な関数(function)をグループ分けする箱
もし、詳しく学びたい場合は、以下記事がわかりやすかったので参考にしてみてください。
【GAS】クラスとインスタンス化
Google Apps Script(GAS)ではクラス・インスタンスという概念があります。 ベーシックな処理で使うシーンは多くないですが、知っていると記述の幅が広がるのでぜひ覚えていってください。 まずは下記のサンプルコードをご覧ください。 このオブジェクトpetには、animal、name、ageというプロパティとgreetというメソッドが用意されています。 function myFunction() { const pet = { animal: 'dog', name: 'Ted', age: 4, born: 1996, greet(){ console.log("Hi, I'm Ted."); } } animal.greet(); } このオブジェクトと同じ構造で、あと5匹分の動物のオブジェクトを用意する必要が出てきた場合どうすればよいでしょうか? すべてのオブジェクトのプロパティとメソッドをもれなく記述しようとすると、サンプルコードの5倍のスクリプト量になってしまいますよね。冗長化しておりメンテナンスも難しそうなのが直感的にわかります。 この問題を解決するために、javascriptには オブジェクトのひな形をベースとして同じメソッドやプロパティを持つ別のオブジェクトを生成する仕組み があります。 用語の定義としては下記です。 各オブジェクトをクラスから都度生成することにより、オブジェクトを毎回一から定義する必要がなくなり、簡潔なスクリプトにまとめることができます。 また、オブジェクトの構造を変えたいときも元のクラスの形式を変更してしまえば、連なるインスタンス構造も一括で変わるので修正やメンテナンスも簡単になります。 このようにしてクラスとインスタンスは、スクリプトの可読性、メンテナンス性、安全性等のさまざまな面でメリットがあります。 class文を使ってクラスを定義します。クラス名はの最初の文字は大文字で記述してください。 定義したクラスをインスタンス化するにはnew演算子を使います。指定してクラス定義に基づいて生成されたインスタンスが戻り値として変えることになります。 もちろん、new演算子より前にclass文が処理される必要があるので記述には注意しましょう。 通常では、オブジェクトにプロパティを定義するには、ドット表記等でプロパティに代入を行います。例えば、「pet」というオブジェクトの「age」というプロパティに「6」という値を代入するには〈pet.age=6〉と記述ができます。 今回のように、petというオブジェクトひな形になるclassに対して、インスタンス化を実行するに際には、コンストラクタという特別な関数とthisキーワードを使います。 constructor(引数1, 引数2,...){  this.プロパティ1 = 引数1  this.プロパティ2 = 引数2} function

スプレッドシート自動化で重要な4つのクラス


以下、4つが重要なクラスとそれぞれの概要です。
  1. SpreadsheetAppクラス
    1. スプレッドシートファイルのデータを管理するクラスです。例えば、スプレッドシートファイルの作成・取得・削除などができます。
  1. Spreadsheetクラス
    1. スプレッドシートのデータ(シート、スプレッドシートの名前、アクセス権限など)を管理するクラスです。例えば、スプレットシートのファイル名の変更、シートの作成・取得・削除などができます。
  1. Sheetクラス
    1. シートのデータ(シート名、セルなど)を管理するクラスです。例えば、シート名の変更、行の追加・削除、選択した範囲のセルの取得などができます。
  1. Rangeクラス
    1. 選択した範囲のセルのデータを管理するクラスです。例えば、セルの値を取得・変更することができます。

自動化例 - 株価時系列スプレッドシートの検索

概要

  1. 開始日と終了日を入力して「表示する」を実行します。
  1. 「開始月-開始日_終了月-終了日」の形式で指定した日付の時系列株価シートが自動生成されます。

デモ

スプレッドシート自動化例 - 株価時系列スプレッドシートの検索のデモ動画

動作確認の方法

  1. 「株価時系列データ検索」のスプレッドシートを開きます↓
  1. 自分のGoogleドライブにコピーする
    1. メニュー > ファイル > コピーを作成
  1. 「表示する」をクリックすると株価検索ができます。

GASスクリプトの確認方法

  1. Google Apps Scriptのコードを確認する
    1. メニュー > 拡張機能 > Apps Script
    2. AppScriptメニュー
      AppScriptメニュー
AppScriptのコード作成画面
AppScriptのコード作成画面

GASスクリプト

JavaScript

GASスクリプト解説


JavaScript
現在開いているSpreadsheetクラスのオブジェクを取得して、変数spreadsheetに格納しています。

JavaScript
dataシートを取得して、変数sheetに格納しています。

JavaScript
検索条件の開始日、終了日と株価時系列データを取得します。
  • 検索条件
  • 株価時系列

JavaScript
検索条件(開始日、終了日)に合致する株価時系列の配列を生成して、変数stockValuesに格納します。

JavaScript
検索条件の開始日、終了日を使って、「開始月-開始日_終了月-終了日」というシート名の文字列を生成して、変数sheetNameに格納します。
  • 例えば、検索条件で、開始日:9月6日、終了日:9月30日の場合は「9-6_9-30」というシート名が生成されます。

JavaScript
検索結果シートが既にあったら削除します。シート名が重複するとエラーが発生するため。

JavaScript
ヘッダー行「日付, 始値, 高値, 安値, 終値, 出来高, 調整後終値*」の配列を取得して、変数headersに格納します。

JavaScript
ヘッダー行headersを株価時系列配列の先頭に追加します。

JavaScript
検索結果を格納するシートをsheetNameで作成します。

JavaScript
検索結果の貼り付け範囲を何行目から何行目からになるのか計算してます
  • 「startIndex + stockValues.length - 1」で最終行を計算してます。
    • 「-1」はヘッダー行の分を減らしています。

JavaScript
R1C1表記の文字列(rangeStr)で、検索結果データを格納する範囲を取得し、変数resultDataRangeに格納します。

JavaScript
検索結果を格納する範囲(resultDataRange)に検索結果(stockValues)を設定します。

JavaScript
format関数を使って、検索結果を格納するシートに色をつけて見やすくします。
resultSheetのシートをアクティブ(選択状態)にします。

まとめ


  • スプレッドシート自動化で重要な4つのクラス
  • その4つのクラスを使ったプログラム例として「株価時系列スプレッドシートの検索」
を扱いました。
工夫次第で他にも色々とスプレッドシートの自動化ができますので、ぜひ、色々と挑戦して見てください。

Google Apps Script 開発入門の教材紹介


https://www.udemy.com/course/wywy-google-apps-script-forty-skills/?referralCode=7F71969F9DD9849220B4 から購入可能
https://www.udemy.com/course/wywy-google-apps-script-forty-skills/?referralCode=7F71969F9DD9849220B4 から購入可能

概要

40のスキル習得をゴールとして、基礎文法の学習、5つの活用事例の学習、スキル習得を促す理解度テストなどを用意。
講座終了後には、40のスキルを活用してGoogle Workspaceアプリ連携による業務効率化ができるようになります。

こんな方にオススメ

  1. プログラミングによる業務効率化を体験してみたい方
      • GoogleアカウントとWebブラウザ(Chrome推奨)があればOKです。
      • プログラミング入門レベルから学ぶことができます。
  1. 会社や個人で Google Workspaceを使っている方
      • 普段使っているGoogle Workspace(Gメール、スプレッドシートなど)を活用して、業務効率化のアイディアをすぐに試すことができます。

学習内容

  1. JavaScriptの 基礎文法(ES2015)学習により、プログラミングの基礎を身につけることができます。
    1. 動画教材で扱っているソースコードは以下Githubに公開しております。
      GitHub - YukiFujisawa/google-apps-script-forty-skills: 5つの活用事例から40のスキルが身につく、Google Apps Script 開発入門【ES2015(ES6)対応】のサンプルコード
      5つの活用事例から40のスキルが身につく、Google Apps Script 開発入門【ES2015(ES6)対応】 のサンプルコードです。 40のスキル習得をゴールとして、基礎文法の学習、5つの活用事例の学習、スキル習得を促す理解度テストなどを用意。 講座終了後には、40のスキルを活用してGoogle Workspaceアプリ連携による業務効率化ができるようになります。 プログラミングによる業務効率化を体験してみたい方 GoogleアカウントとWebブラウザ(Chrome推奨)があればOKです。 プログラミング入門レベルから学ぶことができます。 会社や個人で Google Workspaceを使っている方 普段使っているGoogle Workspace(Gメール、スプレッドシートなど)を活用して、業務効率化のアイディアをすぐに試すことができます。 JavaScriptの 基礎文法(ES2015)学習により、プログラミングの基礎を身につけることができます。 5つの事例を通して40のスキルを身につけ、Google workspaceサービス(Gmail、スプレッドシートなど)を連携できるプログラミングの応用力を身につけることができます。 Google Apps Scriptを実務で活用する方法を理解することができます。 視聴はこちら(Udemyページに遷移します。)
  1. 5つの事例を通して40のスキルを身につけ、Google workspaceサービス(Gmail、スプレッドシートなど)を連携できるプログラミングの応用力を身につけることができます。
  1. Google Apps Scriptを実務で活用する方法を理解することができます。

購入はこちら

↓Udemyにて販売中です!

関連ブログ