Google Apps Script
toggle holdingsはラボを始め業務効率化においてGoogle Apps Scriptを利用しています。ここではGoogle Apps Scriptについて学ぶための情報を提供します。
Google Apps Scriptの概要
Google Apps Script(GAS)は、Googleのクラウドベースのプラットフォームであり、Google Workspaceの各種アプリケーションでカスタムな自動化や機能拡張を行うためのスクリプト言語です。GASはJavaScriptをベースとしており、スプレッドシート、ドキュメント、フォーム、カレンダー、GmailなどのGoogleサービスとシームレスに連携できます。
GASの利点と可能性は以下のようなものがあります:
自動化と効率化: GASを使用することで、繰り返し行う作業や手作業が必要なタスクを自動化できます。たとえば、スプレッドシートのデータ処理やメールの自動送信などがあります。これにより、時間と労力を節約し、作業の効率を向上させることができます。
カスタマイズと機能拡張: GASを使用することで、Googleサービスの既存の機能をカスタマイズしたり、新しい機能を追加したりすることができます。たとえば、スプレッドシートに独自の関数を追加したり、ドキュメントにテキスト操作の機能を追加したりすることができます。
データの統合と処理: GASを使用すると、複数のGoogleサービス間でデータを連携させたり、外部のAPIとデータをやり取りしたりすることができます。たとえば、スプレッドシートのデータをGoogleカレンダーに同期させたり、外部ウェブサービスとデータを連携させたりすることができます。
ワークフローの改善と共同作業: GASはチームでの作業や共同開発にも適しています。複数の開発者が同じGASプロジェクトにアクセスして共同作業することができます。また、バージョン管理システム(例: GitHub)と組み合わせることで、変更履歴の追跡やバージョン管理が容易になります。
以上が、Google Apps Script(GAS)の概要とその利点、可能性についての説明です。GASを活用することで、Googleのさまざまなサービスをより効果的に活用し、カスタマイズされた自動化ソリューションを作成できます。
スクリプトエディタの基本とローカル開発環境
スクリプトエディタのインターフェース
スクリプトエディタにアクセスするには、Googleサービス内でスクリプトを作成または開いて「ツール」→「スクリプトエディタ」を選択します。または、直接以下のURLにアクセスします: https://script.google.com
スクリプトエディタは、メニューバー、エディタペイン、サイドバーなどで構成されています。
メニューバーには、スクリプトの実行やデバッグ、設定などの操作があります。
エディタペインは、スクリプトのコードを入力、編集するための領域です。
サイドバーには、プロジェクトのファイル一覧や追加のリソース、トリガーの設定などがあります。
スクリプトファイルの作成と保存
スクリプトファイルを作成するには、スクリプトエディタのメニューバーから「ファイル」→「新規作成」を選択します。
スクリプトファイルは、Google Apps Scriptプロジェクト内で複数のファイルを持つことができます。新しいファイルを作成するには、サイドバーの「ファイル」→「新しいスクリプトファイル」を選択します。
スクリプトファイルは自動的に保存されますが、手動で保存するには「ファイル」→「保存」またはキーボードショートカットのCtrl + S(Windows)またはCmd + S(Mac)を使用します。
コードの書式設定とコメント
コードの書式設定は、読みやすさと一貫性を確保するために重要です。スクリプトエディタでは、自動的にコードのインデントやスペースの配置を整えることができます。
コードを整形するには、エディタペインでコードを選択し、メニューバーの「編集」→「整形」を選択します。
コメントは、コードの理解やドキュメンテーションを助けるために使用されます。コメントは、//(単一行コメント)または/* */(複数行コメント)で囲まれたテキストとして追加できます。
ローカル開発環境のセットアップ
ローカル開発環境をセットアップすることで、より柔軟な開発とデバッグが可能になります。Clasp(Command Line Apps Script Projects)と呼ばれるツールを使用します。
Node.jsをインストールします(https://nodejs.org からダウンロードできます)。
ターミナルまたはコマンドプロンプトを開き、
npm install @google/clasp -g
と入力してClaspをグローバルにインストールします。ローカルプロジェクトの作成と関連付けは、
clasp create
コマンドを使用して行います。ローカル開発環境では、ローカルのテキストエディタを使用してスクリプトを編集し、
clasp push
コマンドで変更をリモートにプッシュします。
JavaScriptの基礎
変数とデータ型
変数の宣言と初期化:
let
やconst
キーワードを使用して変数を宣言し、適切な値で初期化します。データ型: JavaScriptの基本的なデータ型には、数値(
number
)、文字列(string
)、真偽値(boolean
)、配列(array
)、オブジェクト(object
)などがあります。適切なデータ型を使用して変数を定義します。
条件分岐とループ
条件分岐:
if
文を使用して条件式を評価し、条件に応じた処理を実行します。if-else
文やswitch
文などを使って複数の条件を処理する方法もあります。ループ:
for
ループやwhile
ループなどを使用して、特定の条件下でコードを繰り返し実行します。ループ内でインデックスやカウンターを使用して制御します。
配列とオブジェクト
配列:
[]
内に要素をカンマ区切りで指定し、配列を作成します。配列内の要素にはインデックス番号を使用してアクセスできます。配列に要素を追加したり削除したりする方法もあります。オブジェクト:
{}
内にキーと値のペアを指定し、オブジェクトを作成します。オブジェクトのプロパティにはドット記法やブラケット記法を使用してアクセスできます。オブジェクトに新しいプロパティを追加したり、既存のプロパティを変更したりすることもできます。
関数の作成と呼び出し
関数の作成:
function
キーワードを使用して関数を定義します。関数名と引数を指定し、関数内の処理を記述します。必要に応じて戻り値を返すこともできます。関数の呼び出し: 定義した関数を呼び出すには、関数名と引数を指定します。関数が戻り値を返す場合は、それを変数に代入したり、他の処理で使用したりすることができます。
Google Apps Scriptの基本操作
スクリプトの実行方法
スクリプトの実行は、スクリプトエディタ内で行います。例えば、関数を作成している場合は、関数名を指定して実行します。
スクリプトエディタのメニューバーにある再生ボタン(▶️)をクリックすると、現在開いているスクリプトファイル内の関数が実行されます。
ログの表示とデバッグ
console.log()
メソッドを使用してログを表示することで、スクリプトの実行中に特定の値やメッセージを確認できます。例えば、
console.log("Hello, world!")
というコードをスクリプト内に追加すると、実行時に "Hello, world!" がログに表示されます。
メッセージボックスとダイアログの表示
Browser.msgBox()
メソッドを使用して、スクリプトの実行中にメッセージボックスを表示することができます。メッセージボックスにはタイトルとメッセージを指定します。例えば、
Browser.msgBox("Hello", "Welcome to GAS!")
というコードを実行すると、タイトルが "Hello"、メッセージが "Welcome to GAS!" のメッセージボックスが表示されます。
イベントトリガーの設定
イベントトリガーは、特定のイベント(例: スプレッドシートの変更、フォームの送信)が発生した際にスクリプトを実行する機能です。
イベントトリガーを設定するには、スクリプトエディタのメニューバーから「編集」→「現在のプロジェクトのトリガー」を選択します。
トリガーの設定画面で、イベントの種類、実行する関数、トリガーの頻度などを指定します。
Google Apps Scriptの基本機能
スプレッドシートの操作
スプレッドシートを操作するためには、
SpreadsheetApp
クラスのメソッドを使用します。例えば、新しいスプレッドシートを作成するには
SpreadsheetApp.create('新しいスプレッドシート')
というコードを使用します。スプレッドシートのセルの値を取得するには
getValue()
、セルの値を設定するにはsetValue()
メソッドを使用します。
Gmailの送受信
Gmailを操作するためには、
GmailApp
クラスのメソッドを使用します。例えば、メールを送信するには
GmailApp.sendEmail('example@gmail.com', '件名', '本文')
というコードを使用します。受信したメールを取得するには
getInboxThreads()
メソッドを使用し、スレッド内のメッセージを取得するにはgetMessages()
メソッドを使用します。
ドキュメントの作成と編集
ドキュメントを操作するためには、
DocumentApp
クラスのメソッドを使用します。例えば、新しいドキュメントを作成するには
DocumentApp.create('新しいドキュメント')
というコードを使用します。ドキュメントの本文を取得するには
getBody()
メソッドを使用し、本文にテキストを追加するにはappendParagraph('テキスト')
メソッドを使用します。
カレンダーの操作
カレンダーを操作するためには、
CalendarApp
クラスのメソッドを使用します。例えば、新しい予定を作成するには
CalendarApp.getDefaultCalendar().createEvent('イベント', new Date('2023-06-30T09:00:00'), new Date('2023-06-30T10:00:00'))
というコードを使用します。カレンダーの予定を取得するには
getEvents()
メソッドを使用し、予定のプロパティ(タイトル、開始日時、終了日時など)にアクセスします。
カスタム関数の作成
カスタム関数の概要
カスタム関数は、ユーザーが独自の関数を作成してスプレッドシートやその他のGoogle Appsで使用することができます。
カスタム関数は、既存の関数と同様にセルに入力して実行することができますが、自身で定義したロジックに基づいて結果が計算されます。
関数の引数と戻り値
関数の引数は、関数に渡される値やデータです。関数が特定の操作を実行するために必要な情報を提供します。
関数の戻り値は、関数の実行結果として返される値です。関数の処理結果や計算結果などを戻り値として返すことができます。
カスタム関数の作成と利用
カスタム関数を作成するには、スクリプトエディタ内で関数を定義します。関数は、
function
キーワードを使用して作成されます。例えば、以下のようなカスタム関数を作成することができます:
カスタム関数を利用するには、スプレッドシートのセル内に関数名と引数を指定します。例えば、
=myFunction(A1, B1)
のように使うことができます。
外部APIの使用
外部APIの概要と利用方法
API(Application Programming Interface)は、プログラムが他のプログラムやサービスと通信するための規約や方法論です。
Google Apps Scriptでは、URL Fetch Serviceや組み込みのHTTPリクエストメソッドを使用して外部APIを利用します。
APIキーの取得と認証
外部APIを使用する際には、APIキーを取得する必要があります。APIキーは、APIサービスプロバイダから提供されます。
APIキーを取得する手順や認証方法は、APIサービスプロバイダのドキュメントやウェブサイトに記載されています。
取得したAPIキーをGoogle Apps Scriptのスクリプト内で使用することで、APIへのアクセス権限を取得します。
APIリクエストの送信とデータの取得
Google Apps Scriptでは、外部APIとのデータの送受信にURL Fetch Serviceを使用します。
UrlFetchApp.fetch()
メソッドを使用してAPIリクエストを送信し、データを取得します。APIリクエストには、URLやHTTPメソッド(GET、POSTなど)を指定し、必要な場合にはヘッダーやパラメータを設定します。
取得したデータは、JSON形式などで返される場合が一般的です。取得したデータを解析して必要な情報を抽出し、Google Apps Script内で利用することができます。
API呼び出しの例
上記の例では、UrlFetchApp.fetch()
メソッドを使用して外部APIにGETリクエストを送信しています。apiUrl
変数にはAPIのエンドポイントのURLを指定し、必要に応じて認証情報やヘッダーを設定します。response
変数にはAPIからのレスポンスが格納されます。
APIから返されたレスポンスデータは、response.getContentText()
メソッドを使用して取得します。その後、必要に応じてデータの解析や処理を行います。
なお、上記のコードは一般的な外部APIの呼び出しの例です。具体的なAPIにはAPIドキュメントや仕様を参照し、必要なヘッダーやパラメータ、認証情報などを適切に設定してください。
Google Workspaceの統合
Google Driveの操作
Google Driveを操作するためには、
DriveApp
クラスのメソッドを使用します。ファイルやフォルダの作成、移動、削除などの操作が可能です。
例えば、新しいフォルダを作成するには
DriveApp.createFolder('新しいフォルダ')
というコードを使用します。
Google Calendarの操作
Google Calendarを操作するためには、
CalendarApp
クラスのメソッドを使用します。カレンダーのイベントの作成、取得、変更、削除などが可能です。
例えば、新しいイベントを作成するには
CalendarApp.getDefaultCalendar().createEvent('イベント', new Date('2023-06-30T09:00:00'), new Date('2023-06-30T10:00:00'))
というコードを使用します。
Google Formsの操作
Google Formsを操作するためには、
FormApp
クラスのメソッドを使用します。フォームの作成、質問の追加、回答の収集などが可能です。
例えば、新しいフォームを作成するには
FormApp.create('新しいフォーム')
というコードを使用します。
Google Analyticsのデータ取得
Google Analyticsのデータを取得するには、Google Analytics Reporting APIを使用します。
UrlFetchApp.fetch()
メソッドを使用してAPIリクエストを送信し、データを取得します。取得したデータは、JSON形式などで返される場合が一般的です。取得したデータを解析して必要な情報を抽出し、Google Apps Script内で利用することができます。
高度なスクリプトの作成
ライブラリの利用
ライブラリは、Google Apps Scriptの再利用可能なコードのコレクションです。外部のスクリプトをライブラリとしてプロジェクトに追加し、その関数やオブジェクトを利用できます。
ライブラリを使用するには、スクリプトエディタのメニューバーから「リソース」→「ライブラリ」を選択し、ライブラリのスクリプトIDを指定します。
ライブラリの関数やオブジェクトは、自身のスクリプト内で利用することができます。
HTMLサイドバーとダイアログの作成
HTMLサイドバーやダイアログを作成することで、Google Apps Scriptのスクリプトエディタ内でユーザーインターフェースをカスタマイズできます。
HTMLファイルを作成し、スクリプト内で
HtmlService
クラスのメソッドを使用して表示します。例えば、
HtmlService.createHtmlOutputFromFile('sidebar.html').setTitle('サイドバー')
のようなコードを使用してサイドバーを作成し表示します。
Webアプリケーションの作成
Google Apps Scriptを使用してWebアプリケーションを作成することができます。Webアプリケーションは、外部からアクセスできるURLを提供し、ユーザーとの対話的なインタラクションやデータの処理を行うことができます。
doGet()
またはdoPost()
関数を作成し、それをWebアプリケーションのエンドポイントとして使用します。例えば、
return HtmlService.createHtmlOutput('Hello, world!');
のようなコードを使用してWebアプリケーションの出力を定義します。
Add-onの作成
Add-onは、Google Workspace製品(Google Docs、Sheets、Gmailなど)に機能を追加するための拡張機能です。
Add-onを作成するには、スクリプトエディタで新しいプロジェクトを作成し、Add-onのタイプに応じた関数とメソッドを実装します。
Add-onの設定やメニューの作成、トリガーの設定など、特定の製品に対して動作するように設定します。
GitHubとの連携
GASプロジェクトのバージョン管理の重要性
Google Apps Scriptプロジェクトのバージョン管理は、プロジェクトの変更履歴やバージョン間の比較、バージョンの回復などを容易にするために重要です。
プロジェクトの変更をトラックすることで、バグの特定や機能の追加/削除などの作業を追跡できます。
バージョン管理により、チームでの共同作業や異なるバージョン間の切り替えが容易になります。
GitHub Actionsとの連携
上記の設定ファイルは、GitHubリポジトリのmain
ブランチに対してのプッシュイベントがトリガーとなり、自動デプロイが実行されるように設定する例です。設定ファイル内の <script_id>
部分には、デプロイするGoogle Apps ScriptプロジェクトのスクリプトIDを指定します。
この設定では、GitHub Actionsのワークフロー内で以下の手順が実行されます:
リポジトリのチェックアウト(
actions/checkout
アクションを使用)。clasp
のインストール(npm install -g @google/clasp
を実行)。clasp
へのログイン(環境変数を使用してclasp login
を実行)。Google Apps Scriptプロジェクトのクローン(
clasp clone
を実行)。Apps Scriptへのデプロイ(
clasp push
を実行)。
上記の設定ファイルでは、secrets
セクションにCLASP_CLIENT_ID
、CLASP_CLIENT_SECRET
、CLASP_REFRESH_TOKEN
といった環境変数を使用しています。これらの値は、GitHubリポジトリのSecretsに設定しておく必要があります。
セキュリティと機密情報の管理
環境変数のセットアップと利用
環境変数は、スクリプト内で使用される機密情報や設定値を保持するために使用されます。
環境変数をセットアップするには、スクリプトエディタのメニューバーから「ファイル」→「プロジェクトのプロパティ」→「スクリプトのプロパティ」を選択し、プロパティと値の組み合わせを設定します。
スクリプト内で環境変数を利用するには、
PropertiesService
クラスのメソッドを使用して値を取得します。
機密情報の暗号化と保護
機密情報(例: APIキー、パスワードなど)をスクリプト内に直接埋め込むことはセキュリティ上のリスクです。
機密情報を保護するためには、暗号化やハッシュ化などの手法を使用します。
Google Apps Scriptでは、
ScriptProperties
クラスやPropertiesService
クラスを使用して機密情報を暗号化し、保護することができます。
セキュアな開発プラクティスの実践
セキュアな開発プラクティスを実践することは、スクリプトのセキュリティを確保するために重要です。
以下はセキュアな開発プラクティスの一部の例です:
不要な権限を持つスコープを避け、最小限の権限を使用する。
定期的にスクリプトや関連するライブラリをアップデートする。
定期的な脆弱性スキャンやセキュリティ監査を実施する。
セキュリティに関連するログを記録し、監視する。
ベストプラクティスとデバッグ
エラーハンドリングと例外処理
エラーハンドリングと例外処理は、スクリプトの安定性とエラー管理のために重要です。
try-catch
文を使用してエラーをキャッチし、例外処理を行います。エラーメッセージの表示やログへの出力、適切なエラーハンドリングの設定などを行います。
パフォーマンスの最適化
パフォーマンスの最適化は、スクリプトの実行速度やリソース使用量の改善を目指します。
冗長な処理の削除、効率的なアルゴリズムの選択、キャッシュの利用などがパフォーマンスの向上に寄与します。
コーディングスタイルと可読性
コーディングスタイルと可読性の向上は、スクリプトの保守性や共同作業の円滑さに寄与します。
適切なインデント、意味のある変数名、コメントの追加などによってコードを読みやすくします。
デバッグのテクニック
デバッグはスクリプトの問題解決において重要なスキルです。
Logger
クラスを使用してログを出力し、変数の値やメッセージを確認します。console.log()
やconsole.error()
を使用してコンソールにメッセージを表示します。
次のステップ
Google Apps Scriptを学ぶ上での資料とリソース
公式ドキュメント: Google Apps Scriptの公式ドキュメントは、基本的な概念から高度なテクニックまで、幅広い情報を提供しています。公式ドキュメントには、クイックスタートガイド、リファレンス、チュートリアルなどが含まれています。
サンプルコード: Google Apps Scriptのサンプルコードは、公式ドキュメントやGoogle Developersのサンプルコードリポジトリで入手できます。これらのサンプルコードを実際に試してみることで、機能や利用方法を理解することができます。
コミュニティフォーラム: Google Apps Scriptのコミュニティフォーラムは、ユーザー間での質問や情報共有の場となっています。フォーラムを通じて他のユーザーと交流し、知識や経験を共有することができます。
Google Apps Scriptの将来のトレンドと更新情報の追跡方法
Google Apps Scriptの将来のトレンドや更新情報を追跡するためには、以下の方法を活用できます:
Google Developers ブログ: Google Developers ブログは、Google Apps Scriptの新機能やアップデートに関する公式なアナウンスや情報を提供しています。ブログの定期的なチェックやRSSフィードの購読によって最新情報を入手できます。
Google Apps Scriptの公式Twitterアカウント: @AppsScriptInfo は、Google Apps Scriptの公式Twitterアカウントです。ここでは、新機能、リソース、ヒントなどの情報が共有されます。
開発者向けニュースレター: Google Developersのニュースレターに登録することで、Google Apps Scriptを含むさまざまな開発者向けのニュースやリソースを受け取ることができます。
最終更新