Google Apps Script

Google Apps Script プログラミング (1) はじめに

今日のゴール(実行ログにメッセージ)

以前、「プログラミングを始めるためのきっかけ」という記事を書きました。今回は、Google Apps Script (GAS) プログラミングを少し楽しんでみましょう。

Google Apps Script とは

Google Apps Script(グーグル アップス スクリプト、以下 GAS と省略)は、Google が提供しているドキュメント、スプレッドシート、フォームなどの各種サービスを操作できるプログラミング言語です。「JavaScript」というプログラミング言語をもとに作られているので、習得しやすい特徴があります。

Apps Script | Google Workspace Developer | Google Developers

Google Apps Script is a scripting language based on JavaScript that lets you customize and extend Google Workspace products such as Docs, Sheets, Slides, and Forms.

Google アカウントを持っていれば、インストールが必要なく、直ぐに利用できるお手軽さもあり、私はよく利用しています。

今回のゴール

それでは、早速やってみましょう。今回のゴールは、「これはテストメッセージです」と 3回、実行ログに表示させます。

(※詳しい方へ。message を let で宣言しているのは、次回 (2) への布石だとお察し下さい。)

今日のゴール
今日のゴールです

(1) スプレッドシートの準備

プログラムを練習するために、スプレッドシートを新しく一つ作り、「テスト用シート」と名前を付けます。(※Google ドライブに慣れている方は、この項目は読み飛ばしても構いません。)

1) PCを使って、Google の Webサイトに行きます
 Webブラウザは、IE以外でしたら何でも構いません。図1 のように、Google アカウントにサインインしておきましょう。

図1-1 Google の Webサイト
図1-1 Google の Webサイト

2) Googleドライブを開きます
 画面右上のアプリ ランチャー アイコン(●が9つ並んでいるボタン)をクリックすると、たくさんのアプリが表示されます。その中に入っている「ドライブ」をクリックします。

図1-2  アプリの一覧から「ドライブ」をクリック
図1-2  アプリの一覧から「ドライブ」をクリック

3) 空白のスプレッドシートを開きます
 Google ドライブを開きます
 ここで、左上にある「新規」をクリックすると、メニューが広がります。
 「Google スプレッドシート」→「空白のスプレッドシート」とマウスのカーソルを動かし、「空白のスプレッドシート」をクリックします。

図1-3 「空白のスプレッドシート」をクリック
図1-3 「空白のスプレッドシート」をクリック

4) 「無題のスプレッドシート」が新しく作成されます

図1-4 「無題のスプレッドシート」が開きました
図1-4 「無題のスプレッドシート」が開きました

5) スプレッドシートの名前を変更します
 「無題のスプレッドシート」にマウスのカーソルを持っていき、クリックします。すると、入力が出来るようになります。ここで「テスト用シート」と入力しておきましょう。

図1-5-1 「名前を変更」と表示されたら、クリック
図1-5-1 「名前を変更」と表示されたら、クリック
図1-5-2 「テスト用シート」と入力して、Enterキーを押す
図1-5-2 「テスト用シート」と入力して、Enterキーを押す

(2) プロジェクトの準備

プログラムを管理するまとまり「プロジェクト」を準備します。今、開いている、「テスト用シート」から作成していきましょう。

1) スクリプトエディタを開きます
 スプレッドシートのメニュー「ツール」から、「スクリプトエディタ」を選択し、クリックします。

図2-1 スクリプトエディタを開きます
図2-1 スクリプトエディタを開きます

2) Apps Script が開きます
 これまでとは、見た目が異なる画面が表示されました。画面向かって右側に、プログラムを入力していくことになります。

図2-2 Apps Script のコードエディタ画面
図2-2 Apps Script のコードエディタ画面

3) プロジェクトの名前を変更します
 画面左上の「無題のプロジェクト」と書かれているところに、マウスのカーソルを持っていき、クリックしてください。
 すると、画面中央に小さなウィンドウが表示されますので、「テスト用プロジェクト」と名前を入力しましょう。その後、「名前を変更」をクリックします。

図2-3-1 「名前を変更」と表示されたらクリック
図2-3-1 「名前を変更」と表示されたらクリック
図2-3-2 プロジェクトの名前を変更
図2-3-2 プロジェクトの名前を変更
図2-3-3 プロジェクト名が変更されました
図2-3-3 プロジェクト名が変更されました

(3) 最初の1行を書いてみよう

お待たせしました。記念すべき最初の 1行を書いてみましょう。

1) プログラムを入力しましょう
 入力するのは、2行目にあたるところです。画面向かって右側の「エディタ」に、入力します。

図3-1-1 最初の1行を書いてみましょう
図3-1-1 最初の1行を書いてみましょう

ここでは、. [ピリオド]や、( ) [半角カッコ]、” “ (ダブルクォーテーション)、; [セミコロン]などがたくさんあるので、入力がしにくいかもしれません。

以下に、ソースコードを載せておきます。ここの 2行目の内容を、コピー&ペーストでも大丈夫です。

function myFunction() {
  Logger.log("これはテストメッセージです");
}

※正しく入力できていないと、プログラム実行前ではありますが左下に赤く表示が出ます。

図3-1-2 エラーメッセージの例(左下に「構文エラー」と出ています)
図3-1-2 エラーメッセージの例(左下に「構文エラー」と出ています)

このエラーでは、構文エラー: Syntax Error と書かれています。これは、多くの場合、カッコやダブルクォーテーションが片方しか入っていないプログラムのひとまとまりの終わりに ; [セミコロン]が無い、といった例で表示されます。

今回の例では、( のカッコは有るのに、 ) が無いため、 missing ) after argument list 行:2 と書かれています。行:2 とは、エラーが発生している行番号を示しています。

プログラムの入力間違いは、誰しもあることです。気にせず少しずつ進めましょう。

2) 保存をしましょう
 入力すると、画面左側の「コード.gs」の左側に〇が表示されます。これは、最後に保存した状態から、プログラムが更新されたことを示しています。
 入力を終えたら、保存をしましょう。フロッピーディスクのアイコン「プロジェクトを保存」を押します。すると、「コード.gs」の左側の〇が消えます。

図3-2 プロジェクトを保存します
図3-2 プロジェクトを保存します

(4) プログラムを実行します

1) プログラムを実行します
 いよいよプログラムを実行します。「実行」ボタンをクリックしてください。「選択した機能を実行」と書いてありますが、今回作った機能は、初めから入っていた「myFunction」というもので、既に選択済みです。
 ※初回の実行の場合、結果が返ってくるのに時間がかかります。落ち着いて、ゆっくり待ちましょう。

図4-1 実行ボタンを押します
図4-1 実行ボタンを押します

2) 実行ログを確認します
 画面右側「エディタ」の下、「実行ログ」にその結果が表示されます。
 「情報 これはテストメッセージです」と表示されたら、実行は成功です!

図4-2-1 実行ログに結果が表示されます
図4-2-1 実行ログに結果が表示されます

※実行結果の内容に対してエラーがある場合は、以下のように実行ログの中に赤く表示されます。

図4-2-2 実行ログ内でエラーが出た場合の表示
図4-2-2 実行ログ内でエラーが出た場合の表示

この中では、TypeError : Logger.lag is not a function と書かれています。これは、「Logger.lag という名前の機能は無い」と言っています。

入力し直すと、Logger.ピリオドまで入力したところで、使える機能やプロパティの候補を教えてくれます。ここでは、clear getLog log の3つの機能(method)があると言っています。

この中から、log を選ぶと、正しく文字が自動的に入ります(これを、入力補完と言います)

図4-2-3 Logger.の後ろに続いて入れられるのは、3つ
図4-2-3 Logger.の後ろに続いて入れられるのは、3つ

(5) 今日のゴールに近づくためには

今日のゴールに近づくためには、プログラムの修正が必要です。プログラムの一部を、以下のように修正してみましょう。入力が苦手な方は、コピー&ペーストでも大丈夫です。

function myFunction() {
  for(let num = 1; num <= 3; num++){
    let message = "これはテストメッセージです";
    Logger.log(message);
  }
}

これを実行すると、以下のような画面が表示されます。

図5 今日のゴールと同じになりましたね
図5 今日のゴールと同じになりましたね

他にどんなことが出来るの?

今回は、実行ログに結果を表示させました。ただ、これだけだとどういうメリットがあるのか、分かりにくいですね。

GAS で出来ることは、例えばこんなことです。

  • 実行結果を、セルの中に入れ込んで自動的に表示・更新・削除できる
  • スプレッドシート上のあるセルの値が変更されたら、それに合わせて関連するセルの値を、自動的に計算させたり別のシートにコピー(転記)できる
  • 指定しておいた時刻、またはスプレッドシートの値が変更された時刻に合わせて、通知を特定の人たちに、G-mail(グーグルのメールサービス)で送信できる
  • シートに書かれた住所情報をもとに、Googleマップ上で経路情報を表示できる

他にもいろんなことが出来ます。少しずつ記事を掲載して、お話を膨らめていけたらと考えています。

※関連の次の記事は、「Google Apps Script (2) シートに出力しよう」です。