Google Apps Script の実践: 4 行のコードで Google スプレッドシート、マップ、Gmail にアクセスする

1. Google Apps Script の概要

この Codelab では、Google のデベロッパー テクノロジーを利用するコードを記述する最も簡単な方法の一つを紹介します。これは、ウェブ開発の主流言語である JavaScript を応用することで実現されています。Google Apps Script を使用して、Google スプレッドシートのセルから住所を抽出し、その住所に基づいて Google マップを生成し、Gmail でその地図を添付ファイルとして送信するコードを記述します。さらに、必要なのはわずか 4 行のコードです。

学習内容

  • Google スプレッドシート、Google マップ、Gmail などのさまざまな Google サービスで Google Apps Script を使用する方法。
  • Apps Script 用のブラウザ内エディタを使用してコードを開発する

必要なもの

  • インターネットにアクセスできるウェブブラウザ
  • Google アカウント(Google Workspace アカウントでは管理者の承認が必要になる場合があります)
  • Google スプレッドシートに関する基本的な知識
  • スプレッドシートの A1 表記を読むことができる

2. アンケート

この Codelab/チュートリアルをどのように使用しますか?

通読するのみ 通読し、演習を行う

Google Workspace のデベロッパー ツールとAPI、

<ph type="x-smartling-placeholder"></ph> 初心者 中級 上達 をご覧ください。

3. 概要

この Codelab の内容を理解したところで、次は具体的に何をしましょうか。

  1. JavaScript ベースの Apps Script について説明します。
  2. Google スプレッドシートのスプレッドシートを作成します。
  3. スプレッドシートの左上のセル(A1)に住所を入力します。
  4. 任意のドキュメントで Apps Script エディタを開く方法について説明します。
  5. Apps Script コードを編集、保存、実行する。
  6. Gmail を使用して結果を表示します。

さっそく始めましょう。

Google Apps Script とは

Google Apps Script は、Google Workspace と統合するスクリプトや小規模なアプリケーションを迅速かつ簡単に作成できるようにする開発プラットフォームです。次のことが可能になります。

  • JavaScript でコードを記述し、Gmail、カレンダー、ドライブなどの Google Workspace アプリケーション用の組み込みライブラリにアクセス。
  • インストールは一切不要です。ブラウザ内で直接コードエディタを利用できるほか、スクリプトは Google のサーバー上で実行されます。
  • セキュリティやデータアクセス権限などの複雑なトピックについては、プラットフォームが自動的に処理するため、気にする必要はありません。

Apps Script を使用すると、chat bot からウェブアプリまで、さまざまなアプリケーションを作成できます。最も一般的な用途の 1 つは、Google スプレッドシートの機能を拡張することです。この Codelab の残りの部分では、Apps Script を使用してスプレッドシートからデータを取得し、他の Google サービスに接続する方法を学びます。

4. Google スプレッドシートを作成し、番地を入力

新しい Google スプレッドシートで、次の手順で有効な住所を入力します。

  1. こちらのリンク(sheets.google.com/create)を使用して、Google スプレッドシートを作成します。または、Google ドライブ(drive.google.com)にアクセスし、[新規] >Google スプレッドシート >空白のスプレッドシート

413a93e5b2f6b3d4.png

  1. 空白のスプレッドシートの左上にある最初のセル(A1)に移動します。これが A 列の 1 行目になります。馴染みのある方は、こちらの A1 表記の説明をご確認ください。
  2. セルに有効な住所を入力してください。番地、郵便番号、または市区町村と都道府県の組み合わせを使用して、世界中にある正確な位置を含む住所を選択してください。ニューヨーク市の住所の例を次に示します。

7077e446455639df.png

このシートで必要な作業はこれだけです。エディタを開いてコードを記述しましょう。

5. Apps Script コードを編集する

新しい Google スプレッドシートを作成したら、バインドされたスクリプトを編集します。そのための手順は次のとおりです。

スクリプト エディタを開く

メニューバーで、[拡張機能] >Apps Script を開いて、Apps Script 用のブラウザ コードエディタを開きます。

新しいブラウザタブで、コードエディタにシートのデフォルトの container-bound スクリプトが表示されます。myFunction() という名前のデフォルトの関数が自動的に作成され、関数内にカーソルが配置されるため、作業を開始できます。

住所の Google マップをメールで送信

「テンプレート」空のため、それをアプリケーションに置き換えましょう。

  1. スクリプト エディタで、デフォルトの myFunction() コードブロックを次のコードに置き換えます。
/** @OnlyCurrentDoc */
function sendMap() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var address = sheet.getRange('A1').getValue();
  var map = Maps.newStaticMap().addMarker(address);
  GmailApp.sendEmail('YOUR_EMAIL_ADDR', 'Map', 'See below.', {attachments:[map]});
}
  1. プレースホルダのメールアドレス('YOUR_EMAIL_ADDR')を有効なメールアドレスに置き換えます。(例: friend@example.com)。
  2. スクリプトを保存するには、保存 保存 をクリックします。
  3. Apps Script プロジェクトの名前を変更するには、[無題のプロジェクト] をクリックし、プロジェクトのタイトルを入力して [名前を変更] をクリックします。

コードのレビュー

アプリ全体を構成する sendMap() 関数の 4 行を確認しましょう。興味深いことに、このコードは 3 つの異なる Google プロダクトを参照しています。

最初の行は、承認に影響するアノテーション コメントです。

/** @OnlyCurrentDoc */

ほとんどのスクリプトは、実行前にユーザーにいくつかの権限を要求します。これらの権限は、ユーザーがスクリプトに実行を許可する内容を制御します。最初の行は任意のアノテーションを含むコメントで、ユーザーのすべてのスプレッドシートではなく、現在のスプレッドシートへのアクセスを制限するよう Apps Script に指示します。1 つのファイルだけを扱う場合は、常にこのアノテーションを含めることをおすすめします。

このコードでは、sendMap() に通常の JavaScript 関数宣言を使用しています。

function sendMap() {

次の行は、SpreadsheetApp オブジェクトを介して Apps Script からアクセスできるスプレッドシート サービスを呼び出しています。返されたシートを、sheet という名前の変数に代入しています。getActiveSheet() メソッドは、現在のシート オブジェクトへの参照を取得し、変数 sheet に格納します。

  var sheet = SpreadsheetApp.getActiveSheet();

sheet オブジェクトを使用すると、(1 つのセルの)セル範囲を A1 表記getRange() で参照します。「範囲」はセルのグループです。セル A1(住所を入力したセル)のようなセルが 1 つ含まれています。範囲内の範囲をフェッチするため、getValue() メソッドは範囲内の左上のセルの値を返し、その値を変数 address に代入します。住所をさらに追加して、別のセルから読み取ることもできます。

  var address = sheet.getRange('A1').getValue();

コードの 3 行目では、Maps オブジェクトを使用して Google マップサービスに接続します。newStaticMap() は静的地図オブジェクトを作成し、addMarker() メソッドは「ピン」を追加します。シート内の住所を使用して地図に追加します。

  var map = Maps.newStaticMap().addMarker(address);

最後に、Gmail サービスMailApp オブジェクトを介して sendEmail() メソッドを呼び出して、「See below」というテキストを含むメールを送信します。地図画像を添付します

  GmailApp.sendEmail('friend@example.com', 'Map', 'See below.', {attachments:[map]});
}

6. Google スプレッドシート、マップ、Gmail アプリを実行する

名前を付けて保存したら、関数を実行します。エディタの上部で、関数リストから sendMap() が選択されていることを確認し、[実行] をクリックします。

デベロッパーが評価している Apps Script の機能は、プログラムにユーザーのデータへのアクセスを許可する認証コードを記述する必要がないことです。この設定は Apps Script によって管理されますが、アプリのユーザーは、スクリプトがスプレッドシートにアクセスしたり、Gmail でメールを送信したりするための権限を、引き続き付与する必要があります。最初の承認ダイアログは次のようになります。

ba6e1a798e404e0d.png

[権限を確認] をクリックして続行します。

OAuth2 ダイアログ ウィンドウが表示され、スプレッドシートにアクセスしてメールを送信する許可を求めます。

9bed7ef1ccbd7569.png

アクセスを許可すると、スクリプトが最後まで実行されます。

メッセージを送信したメール アカウントを確認すると、「Map」と書かれたメールがあるはずです。次のようなメッセージが表示されます。

51f61fc51a13d28f.png

メールの添付ファイルを開くと、シートに入力したアドレスがピンが付いた Google マップが表示されます。

739bb45b75e3f7c7.png

わずか 4 行のコードで、3 種類の Google サービスに有意義な方法でアクセスできました。

7. 参考情報

この Codelab で紹介しているコードは、GitHub リポジトリ(github.com/googleworkspace/apps-script-intro-codelab)でも入手できます。以下に、この Codelab で学習した内容をさらに掘り下げたり、Google デベロッパー ツールにプログラムでアクセスするその他の方法を探したりするために役立つリソースを示します。

ドキュメント

動画

ニュースと最新情報

その他の Codelab

入門

中級

リファレンス アプリケーション