この記事はシニアスタッフ ソフトウェア エンジニア、Mike Procopio による Google Developers Blog の記事 "Announcing the Apps Script connector for AppSheet: Automate workflows for Google Workspace" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
この度、Apps Script connector for AppSheet をリリースしました。これにより、ノーコードの AppSheet アプリから Apps Script コードの関数を呼び出せるようになります。AppSheet アプリから Apps Script の機能にアクセスできるようになるので、AppSheet アプリでできることが大幅に増えます。たとえば、AppSheet アプリと Google Workspace を組み合わせて、ドライブ、ドキュメント、スプレッドシート、Admin SDK などの Workspace API を利用すれば、Apps Script を使ってワークフローを自動化できます。また、YouTube、Google アナリティクス、BigQuery などのその他の Google サービスと組み合わせることもできます。
Read More
この記事はシニアスタッフ ソフトウェア エンジニア、Mike Procopio による Google Developers Blog の記事 "Announcing the Apps Script connector for AppSheet: Automate workflows for Google Workspace" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
この度、Apps Script connector for AppSheet をリリースしました。これにより、ノーコードの AppSheet アプリから Apps Script コードの関数を呼び出せるようになります。AppSheet アプリから Apps Script の機能にアクセスできるようになるので、AppSheet アプリでできることが大幅に増えます。たとえば、AppSheet アプリと Google Workspace を組み合わせて、ドライブ、ドキュメント、スプレッドシート、Admin SDK などの Workspace API を利用すれば、Apps Script を使ってワークフローを自動化できます。また、YouTube、Google アナリティクス、BigQuery などのその他の Google サービスと組み合わせることもできます。
Google AppSheet
AppSheet は、カスタムのアプリやワークフローをノーコードで開発し、ビジネス プロセスを自動化するための Google のプラットフォームです。これを使うと、コードを書くことなく、エンドツーエンドのアプリを開発してデプロイし、自動化を行うことができます。
Google Appsheet でアプリの定義を編集する
ノーコードの概要
Apps Script コネクタ機能の説明に入る前に、 ノーコードの意味について考えてみましょう。AppSheet などのノーコード型プラットフォームを利用すると、 シチズン デベロッパー がウェブベースのユーザー インターフェースを使い、データの解析を通して、短時間で自動的にアプリを開発できます。通常は、データソースとして、Google スプレッドシート、MySQL、Salesforce、その他のデータベースを利用します。こういったアプリの作成には、従来のソフトウェア エンジニアリングの経験は不要です。そのため、幅広いスキルを持つビジネス テクノロジストやアナリストがアプリを開発して、業務を簡易化したり、効率化したりできます。
AppSheet のようなノーコード型プラットフォームでは、コードを書いてアプリを動かすのではなく、ウェブベースのエディタ UI でアプリの動作を定義します。たとえば、アプリはどう動作すべきか、どんなデータソースを使うのか、データにはどんな意味があるのか、ユーザーにどんな UI を表示するのか、どんなイベントを管理するのか、イベントの発生時にどんなアクションを実行するのかなどを指定します。そのアプリは、UI を含むエンドツーエンドのデータ駆動型アプリとして本番環境にデプロイします。これはすべて、実際のコードを「書く」ことなく実現できます。通常のウェブアプリやネイティブ アプリにしか見えないので、エンドユーザーが違いを意識することはありません。
ノーコードが効果的な理由
ノーコード型プラットフォームは、大部分のアプリで実際に効果的に機能しています。その理由は、多くのアプリの機能が非常に似かよっているからです。特に、社内のビジネス プロセスを扱うアプリはよく似ています。このようなアプリには、多くの共通点があります。データを格納するデータソース、データ「レコード」という概念、データの収集や編集を行う UI やフォーム、ユーザーに固有なデータ表示画面、データ変換を定義する式、データが変更されたときに実行されるアクション、管理者による権限の制御などです。
例として、社員の出張申請書を作成したり承認したりするアプリを考えてみましょう。このアプリには、経費報告書を作成したり承認したりするアプリとの共通点がたくさんあります。どちらのアプリでも、社員がレコードを作成し、そのレコードに対して審査や追記が行われ、変更が発生するとユーザーに通知され、最終的に申請は完了してクローズされます。同じように、社員に貸与されるコンピュータ機器を追跡する社内アプリとの間にも、多くの共通点があります。たとえば、汎用的な在庫追跡、フルフィルメント、注文システムなどです。
ノーコード型プラットフォームの課題は、常に表現力と高レベルの抽象化とのバランスを取る点にあります。幸いにも、データ、データ ライフサイクル、プロセスで想定される中核部分をしっかりと理解してしまえば、ビジネス プロセスはほぼそれに従います。この領域でノーコード型プラットフォームが効果的なのは、そのためです。しかし、アプリの要件が、ノーコード型プラットフォームでできること以上に広がることもあるかもしれません。新しい Apps Script コネクタは、ノーコード型アプリの表現力(機能)を大幅に高めます。そのため、要件やビジネス プロセスが進化しても、それに対応してアプリを強化することができます。
Google Workspace と Workspace API と Apps Script
Google Workspace は、Google のクラウドベース生産性スイートです。これを使うと、あらゆる規模のチームが連携して制作や共同作業をすることができます。皆さんにとって、Gmail、カレンダー、ドライブ、ドキュメント、スプレッドシート、スライドなどのたくさんのアプリはおなじみのものでしょう。各アプリには充実したデベロッパー API も搭載されており、アプリのデベロッパーがプログラムから機能を利用できるようになっています。たとえば、ドライブ API を使うと、ユーザーがファイルをアップロードしたりダウンロードしたりするコードを作成できます。Gmail API ならメッセージ機能を統合でき、Google ドキュメント API ならスクリプトから Google ドキュメントを編集できます。
Chat、Gmail、ドキュメントのプレビューを組み込んだ Google Workspace を使う
Apps Script は ローコード 型プラットフォームで、これを使うと、Google Workspace の統合、自動化、拡張を行うビジネス ソリューションをすばやく簡単に開発できます。使いやすい高レベルな API の「ラッパー」が提供されているので、Google Workspace や外部サービスとのカスタム統合が可能です。さらに、Apps Script を使うと、YouTube、Google アナリティクス、BigQuery などの Google のサービスを組み込むこともできます。これは充実したプラットフォームであり、スクリプトを書くことで、複雑なビジネス ロジックやマクロを実装したり、サードパーティ ベンダーのデータ交換システムや機械学習分類サービスなどの外部サービスを呼び出したりできます。
Google Apps Script コードエディタでスクリプトを編集する
Apps Script connector for AppSheet の紹介
今週リリースされた Apps Script connector for AppSheet が、AppSheet、Apps Script、Google Workspace、そして Google Workspace の多くのデベロッパー API のすべてをつなぎます。これにより、Apps Script の関数を呼び出してデータを渡せるようになるので、AppSheet を使ったノーコード型アプリでできることが大幅に広がります。これは、 ノーコード (AppSheet)と ローコード (Apps Script)の橋渡しをする機能と考えることもできるでしょう。重要なことは、Apps Script スクリプトを書く人は、スクリプトを呼び出すノーコード型 AppSheet アプリの作成者と同じでなくてもよい点です(ほとんどの場合は、違う人でしょう)。
Apps Script デベロッパーから見れば、この機能によって、いくつかの重要な可能性が開かれることになります。AppSheet の特に大きなメリットは、UI を含む実際のエンドツーエンド アプリ(フロントエンド)を簡単にデプロイできることです。既存の Apps Script コードを呼び出せる新機能を使えるので、ノーコード型 AppSheet アプリを作成したり、それを使って既存のフロントエンドを置き換えたりするという選択肢がゲームチェンジャーになる可能性があります。
Apps Script connector for AppSheet の使用
AppSheet でこれを設定するのは簡単で、スクリプト自体を除けば、他にコードは必要ありません。基本的な考え方としては、アプリの作成者が AppSheet の「タスク」を設定して、呼び出したい Apps Script スクリプトを選びます。タスクとは、AppSheet Automation がトリガーされたときに実行されるアクションを指します。
通常、このようなアクションは、AppSheet のデータソースの特定のデータ行に対して実行されます。たとえば、アプリのエンドユーザーが新しいデータレコードを作成したときに、自動処理をトリガーすることができます。また、Apps Script 関数のパラメータに渡す値は、アクティブなデータレコードの値に基づいて指定することもできます。
Google AppSheet で自動処理タスクを編集する
これは、次の 5 つの手順で設定できます。
- AppSheet で [Automation] 画面を選択し、新規 ボット を作成して、管理するイベントを関連付けます。最後に、 タスク で [Call a script] オプションを選択します。
AppSheet の自動処理タスクを設定し、Apps Script 関数を呼び出す
- 続いて、[Apps Script Project] で呼び出すスクリプトを選択します。このコードは、Apps Script エディタを使って作成し、アプリ作成者の Google ドライブに格納されます(他のユーザーが共有したものでも構いません)。
呼び出す Apps Script プロジェクトを Google ドライブから選択する
- プロジェクトを選択すると、Apps Script プロジェクト内の呼び出し可能な関数の一覧が [Function name] ドロップダウンに表示されます。ここで、AppSheet から呼び出す関数を選択します。
- 呼び出す関数を選択すると、パラメータ(関数を呼び出すときに渡す追加データ)の一覧が表示されます。
logTravelRequestUpdate() Apps Script 関数に渡すパラメータが表示される
- 関数の各パラメータについて、AppSheet の Expression Assistant を使って、自動処理を呼び出すときにパラメータとして渡す値を指定します。式では、単なる AppSheet アプリのデータソース列を使うことも、それよりも複雑な関数や複数の列の計算結果を使うこともできます。
AppSheet の Expression Assistant を使って Apps Script 関数のパラメータに渡す値を選択する
最後に、AppSheet エディタでタスクを保存します。[Save] ボタンを使用してください。
これで完了です。自動処理がトリガーされると(ユーザーが新しいデータ行を追加したときなど)、AppSheet の自動処理エンジンが指定した Apps Script 関数を呼び出します。その際に、式を評価した値が関数の引数として渡されます。関数呼び出しの詳細は、AppSheet の Automation Monitor から確認できます。
サンプルコード
次に簡単なサンプルを示します。上のスクリーンショットで紹介した Travel Request Tool AppSheet アプリに基づくもので、実際に試してみることができます(下のサンプル スクリプトのセクションで、別の例も紹介します)。次のコードは、社員の出張申請書の詳細情報を、「監査ログ」を模した Google ドキュメントに書き込む Apps Script 関数です。ここでは、Apps Script で利用できる DocumentApp ラッパー ライブラリを通して Google ドキュメント API を使っています。
TravelRequestAuditLogger.gs
function logTravelRequestUpdate(RequestDate, Requestor, Origin, ...) {
var TRAVEL_REQUEST_AUDIT_LOG_DOCID = 'your_docid_here'
var doc = DocumentApp.openById(TRAVEL_REQUEST_AUDIT_LOG_DOCID)
var body = doc.getBody();
var dataParagraph = body.insertParagraph(0, '');
var headerText = dataParagraph.appendText('*** NEW AUDIT LOG ENTRY ***\n');
headerText.setBold(true);
// Add in the audit log entry metadata.
dataParagraph.appendText('New Travel Request Tool audit log entry...\n');
dataParagraph.appendText('RequestDate: ' + RequestDate + '\n');
dataParagraph.appendText('Requestor: ' + Requestor + '\n');
dataParagraph.appendText('Origin: ' + Origin + '\n');
// ... additional values here to append to Google Doc
}
この関数が呼び出されると(新しい出張申請書が作成されて AppSheet の自動処理から呼び出される場合など)、AppSheet から渡された値に応じたテキストが Google ドキュメントに追加されます。ドキュメントが更新されると、次のようになります。
Apps Script の Google ドキュメント API と AppSheet から渡された値を使って作成した Google ドキュメントの出力例
スタートガイド
すぐに使ってみたい場合やコミュニティのサポートを受けたい場合に役立つリソースの一覧を作成しています。
サンプル スクリプト
この機能を使ってみる際に役立つ 3 つのサンプル スクリプトを紹介します。
サンプル Google Workspace プロジェクト - ドキュメント、スプレッドシート、スライドの作成とメールの送信
カレンダー イベントの作成 - カスタマイズ可能なカレンダー イベントの作成
インタラクティブ Chat メッセージの送信 - リンクを開くメッセージやイメージを表示するメッセージを Google Chat で送信
この機能を発表できたことをとてもうれしく思っています。皆さんが Google Workspace で作るものを見るのが楽しみです。今後も AppSheet や Google Workspace プラットフォームのお知らせを受け取りたい方は、デベロッパー ニュースレターへの登録をお願いします。
Reviewed by
Eiji Kitamura - Developer Relations Team