Google Apps Scriptを利用してスプレッドシートのセル情報の取得と挿入をしてみよう

あらゆる場面で役に立つスプレッドシート

Googleが提供しているツールは優秀なモノが多いですが特にスプレッドシートはあらゆる場面で役に立ちます。情報の共有が容易でありコロナウィルスの影響で広まりつつある、在宅ワークの働き方でも情報を共有しやすいという点で大いに役に立つツールです。スプレッドシートはExcelに似ている部分が多くユーザーインタフェースもわかりやすいことが人気です。
また、GoogleではGoogleのツールやサービスを連携して利用できるプログラミング言語Google Apps Scriptを提供しており、スプレッドシートと連携して利用することもできます。この記事ではGoogle Apps Scriptとスプレッドシートを組み合わせてスプレッドシートの情報を取得したり、セルの挿入などの操作をする方法について紹介していきたいと思います。

セルの操作をするにはシートの指定をする必要がある

基本となるセルの操作をしますがスプレッドシートは構成上シートと呼ばれるモノがあります。Excelをある程度使っている方ならば馴染みが深いですが、スプレッドシートは複数のシートを生成することが可能です。

スクリプトとしてセルの操作をするためにもシートを指定する必要があります。やり方は主に2種類で下記の方法のどちらかを選択する必要があります。

1. 現在アクセスしているシート情報を取得する

こちらの場合のサンプルは下記です。

  • function myFunction() {
  • var sheet=SpreadsheetApp.getActiveSheet();// アクティブ状態のシート情報を取得
  • var value=sheet.getRange(“B5”).getValue(); // B5のセル情報を取得
  • Browser.msgBox(value); // メッセージボックスとして表示
  • }

このサンプルではアクティブ状態(表示している状態)のシートに対してB5のセル情報を取得するようにしています。しかし、アクティブ状態のシートでないと取得できないのは少し面倒でしょう。そこでもう一つの方法があります。

2. アクセスしていない状態でも指定のシートを取得する

こちらのサンプルは下記です。

  • function test() {
  • var activeSheet = SpreadsheetApp.getActiveSpreadsheet(); // アクティブ状態のスプレッドシートを取得
  • var sheet = activeSheet.getSheetByName(“シート2”);// シート名(シート2)を指定
  • var value = sheet.getRange(“B5”).getValue(); // B5のセル情報を取得
  • Browser.msgBox(value); // メッセージボックスとして表示
  • }

アクティブ状態のスプレッドシートを取得してシート名を指定し、セル情報の取得を行います。これでシートをわざわざアクティブ状態にしなくても情報の取得ができるようになります。

2種類の方法を紹介しました。一見するとシート名を指定するやり方の方がいいように思えます。しかし、シート名は変更が可能です。使用者がうっかりシート名を変更するとスクリプトエラーとなりますのでケースバイケースです。

ルールとして絶対にシート名を変えないなどの対応が必要となります。説明が面倒だったりシート名が常に変わるような状態であればアクティブ状態のシート情報を取得するのがいいでしょう。

セル情報をまとめて取得する

先ほどのサンプルでは一つのセルに対してセル情報を取得しましたがまとめて取得する方法もあります。

  • function myFunction() {
  • var activeSheet = SpreadsheetApp.getActiveSpreadsheet(); // アクティブ状態のスプレッドシートを取得
  • var sheet = activeSheet.getSheetByName(“シート2”);// シート名(シート2)を指定
  • var value=sheet.getRange(“B1:B10”).getValues(); // B1からB10のセル情報を取得
  • Browser.msgBox(value); // メッセージボックスとして表示
  • }

サンプル4行目のgetValueをgetValuesにすること、getRandの中は「始まりのセル:終わりのセル」というようにすることで複数の情報を取得することができます。

セルに情報挿入

情報を挿入することでより便利に利用することが可能です。一つだけの挿入とまとめての挿入両方のサンプルを見てみましょう。

〇一つだけの挿入

  • function myFunction() {
  • var activeSheet = SpreadsheetApp.getActiveSpreadsheet(); // アクティブ状態のスプレッドシートを取得
  • var sheet = activeSheet.getSheetByName(“シート2”);// シート名(シート2)を指定
  • var value=sheet.getRange(“A5”).setValue(“一つだけ挿入”); // B1からB10のセル情報を取得
  • }

〇複数の挿入

  • function myFunction() {
  • var activeSheet = SpreadsheetApp.getActiveSpreadsheet(); // アクティブ状態のスプレッドシートを取得
  • var sheet = activeSheet.getSheetByName(“シート2”);// シート名(シート2)を指定
  • var value=sheet.getRange(“A1:A5”).setValue(“複数挿入”); // B1からB10のセル情報を取得
  • }

挿入処理ができるようになると便利な場面が多く出てきますので参考にしてみてください。

Google Apps Scriptでのスプレッドシートの操作サンプルまとめ

今回ご紹介したサンプルコード5つを以下にまとめました。

現在アクセスしているシート情報を取得

  • function myFunction() {
  • var sheet=SpreadsheetApp.getActiveSheet();// アクティブ状態のシート情報を取得
  • var value=sheet.getRange(“B5”).getValue(); // B5のセル情報を取得
  • Browser.msgBox(value); // メッセージボックスとして表示
  • }

アクセスしていない状態で指定のシートを取得

  • function test() {
  • var activeSheet = SpreadsheetApp.getActiveSpreadsheet(); // アクティブ状態のスプレッドシートを取得
  • var sheet = activeSheet.getSheetByName(“シート2”);// シート名(シート2)を指定
  • var value = sheet.getRange(“B5”).getValue(); // B5のセル情報を取得
  • Browser.msgBox(value); // メッセージボックスとして表示
  • }

セル情報をまとめて取得

  • function myFunction() {
  • var activeSheet = SpreadsheetApp.getActiveSpreadsheet(); // アクティブ状態のスプレッドシートを取得
  • var sheet = activeSheet.getSheetByName(“シート2”);// シート名(シート2)を指定
  • var value=sheet.getRange(“B1:B10”).getValues(); // B1からB10のセル情報を取得
  • Browser.msgBox(value); // メッセージボックスとして表示
  • }

セルに情報挿入

〇一つだけの挿入

  • function myFunction() {
  • var activeSheet = SpreadsheetApp.getActiveSpreadsheet(); // アクティブ状態のスプレッドシートを取得
  • var sheet = activeSheet.getSheetByName(“シート2”);// シート名(シート2)を指定
  • var value=sheet.getRange(“A5”).setValue(“一つだけ挿入”); // B1からB10のセル情報を取得
  • }

〇複数の挿入

  • function myFunction() {
  • var activeSheet = SpreadsheetApp.getActiveSpreadsheet(); // アクティブ状態のスプレッドシートを取得
  • var sheet = activeSheet.getSheetByName(“シート2”);// シート名(シート2)を指定
  • var value=sheet.getRange(“A1:A5”).setValue(“複数挿入”); // B1からB10のセル情報を取得
  • }

スプレッドシートの操作を学ぶことで広がる可能性

今回は簡易的な操作方法であるセルの取得と挿入方法を紹介しました。他にもスプレッドシートの機能を使う方法もあります。少し知識が必要ではありますがマスターすれば業務に大きい貢献ができますので興味を持ったら調べてみるといいでしょう。