Google Apps Script

Google Apps Script プログラミング (2) シートへ出力しよう

図7

※この記事は、「Google Apps Script プログラミング (1) はじめに」の続きです。

前回は、実行ログに「これはテストメッセージです」と3回表示させるプログラムを作りました。今回は、このテストメッセージを少し変更して、Google スプレッドシートに表示します。

今回のゴール

今回のゴールは、Google スプレッドシートの 1行目から 3行目までに、「これは n 行目のメッセージです」とメッセージを表示させます。

GASプログラミング (2) のゴール
GASプログラミング (2) のゴール

それでは、やっていきましょう。

(1) メッセージに表示回数を入れてみよう

前回までのところでは、3回メッセージが出ていますが、どれも同じメッセージが表示されていました。これを「これは、n 回目のテストメッセージです」といったように、メッセージに表示回数を入れてみましょう。

1) プログラムの変更
早速ですが、以下のようにプログラムを変更します。修正するのは、3 行目です。

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

よく見ると、“これは”“回目のテストメッセージです” というように、メッセージを二つに分けています。その間に、num というものを入れて、左右を + でつないでいます。

2) 変更したプログラムを実行
実行すると、以下のように表示されます。

図1 n回目のテストメッセージ
図1 n回目のテストメッセージ

ちゃんと、「1回目」から始まって、「3回目」のメッセージになっていますね。ここまで、プログラムの説明はあまりしていませんが、「とりあえず楽しんで出してみる」ことを優先してみましょう。

(2) シートに出力してみよう

このメッセージを、Google スプレッドシートに出力しましょう。

1) プログラムの入力と実行
このようにプログラムを入力してみましょう。少し難しくなるので、以下のプログラムを、コピー&ペーストで入れても構いません。入力が終わったら、「実行」をクリックしてください。

function myFunction() {
  const sheet = SpreadsheetApp.getActiveSheet();
  for(let num = 1; num <= 3; num++){
    let message = "これは" + num + "回目のテストメッセージです";
    sheet.getRange(num,1).setValue(message);
  }
}

2) シートをプログラムで操るための許可設定(プログラム実行の初回のみ)
Google スプレッドシートをプログラムを使って操作するため、このプログラムを初めて実行する時には、以下のような表示が出ます。ここで、「権限を承認」をクリックしてください。

図2 「承認が必要です」とメッセージが出ます
図2 「承認が必要です」とメッセージが出ます

すると、次はこのような「アカウントの選択」ウィンドウが表示されます。ご自分のアカウント名を選択してください。

図3 「アカウントの選択」画面で、自分のアカウントを選びます
図3 「アカウントの選択」画面で、自分のアカウントを選びます

続けて、アプリの承認に関わる表示がでます。

赤い警告が出て驚きますが、自分自身で作ったプログラムは、Googleに承認を受けているわけではないので、「このアプリは Google で確認されていません」と出ているのです。

「詳細」をクリックしてください。

図4 自分自身が作成したものでも、赤い警告は出ます
図4 自分自身が作成したものでも、赤い警告は出ます

「詳細」を押したことで、その下に細かな説明が出てきました。リスクを理解したうえで、実行するかどうかを決めてくださいと言っています。ここでは、一番下にあるリンクをクリックします。

図5 赤線で示したリンクを押します
図5 赤線で示したリンクを押します

最後のウィンドウが表示されます。

作成したプログラムを含むプロジェクト「テスト用プロジェクト」が、Google スプレッドシートの編集・作成・削除などを操れるよう、許可をします。「許可」をクリックして下さい。

図6 スプレッドシートにアクセスすることへの許可
図6 テスト用プロジェクトが Google スプレッドシートにアクセスすることへの許可

お疲れ様でした。ここまでやることで、ようやく「テスト用プロジェクト」の画面に戻ってきました。

3) プログラムを再度「実行」
プログラムは実行されたかというと、まだ実行されていません。初回は許可を確認しただけだったのです。改めてもう一度、実行をしてみましょう。

4) 実行結果を確認しよう
実行ログを確認してみましょう。ここまで、幾つもリンクやボタンをクリックしてきたのに、実行ログには、「実行開始」「実行終了」としかメッセージが表示されていません。「これは n回目のテストメッセージです」は、どこに表示されているのでしょう。

図7 「テストメッセージです」は、どこへ?
図7 「テストメッセージです」は、どこへ?

5) シート「テスト用シート」を確認しよう
ここで、「テスト用シート」を見てみましょう。すると、1行目1列目から始まって、3行目1列目まで、メッセージが入っているのが分かります。

図8 シートに情報が追加されていました
図8 シートに情報が追加されていました

今日のゴールにたどり着きました。お疲れ様でした。

何か間違ったところに文字が出てしまった人は、シート上の情報を全て消してください。その上で、Apps Script でプログラムコードを書き直して、再度、実行してみましょう。

おまけ(試しに考えて、やってみよう)

このシートに出力するメッセージを、以下のようにするには、どうしたらよいでしょうか。試しに考えて、やってみてください。

おまけ 「これは n 行目です」と表示させるには?
おまけ 「これは n 行目です」と表示させるには?

ヒントは、2 3行目と4行目です。ここの一部を変えるだけで実現できます。

(2021/2/8 追記 おまけの答え)

おまけの答えです。ヒントで、誤って 2行目と書いていました。申し訳ございません。正しくは、3行目と4行目でした。それでは見てみましょう。

function myFunction() {
  const sheet = SpreadsheetApp.getActiveSheet();
  for(let num = 1; num <= 5; num++){
    let message = "これは" + num +"行目です";
    sheet.getRange(num,1).setValue(message);
  }
}

ここでのポイントは、「繰り返し実行される回数を、5回までにすること」「メッセージの文言を変えること」です。

num <= 5 と書いているところは、「num が 5以下の間、繰り返す」ことを示しています。この部分は、for 文といって、プログラムでの繰り返しを示しています。

//for(カウント変数; 継続条件式; 増減式) {
  for(let num = 1; num <= 5; num++){

    // ここから下の内容を、繰り返します
    let message = "これは" + num +"行目です";
    sheet.getRange(num,1).setValue(message);

  // 下の } まで行ったら、for文の最初まで戻ります。
 // for文の最初に戻った時に、num の値が 1つ増えます。
  }

また、”回目のテストメッセージです” を “行目です” と書き換えることで、行数を示すのに適したメッセージに変わったのです。