スプレッドシート、シート、範囲|Google Apps Script入門(3)

Google
この記事は約11分で読めます。

はじめに

 Google Apps Script入門第三弾として、スプレッドシート、シート、範囲について紹介します。

 この記事を読むと、次の疑問について知ることができます。

  • スプレッドシートサービスとは?
  • スプレッドシートの読み込み及びGASの起動
    • 学習するためのスプレッドシートファイルのコピーの作成
    • GASの起動
  • スプレッドシート(Spreadsheet)のメソッド
    • アクティブなスプレッドシートの名前変更
    • アクティブシートのコピー
  • シート(Sheet)メソッド
    • シート名の変更
    • シートの列幅の変更
  • Rangeオブジェクトのメソッド
    • 範囲移動
    • 範囲並べ替え

 Google Apps Script入門(2)では、スプレッドシートのマクロとカスタム関数について学習してきました。

 ここでは、スプレッドシート、シート、範囲などについて深堀していきます。

スプレッドシートサービスとは?

 Google Apps Scriptで、Googleスプレッドシートを扱うためのここで解説する対象(オブジェクト)が4つあります。

  1. SpreadsheetAppオブジェクト
    Googleスプレッドシートを扱う上で一番上の親になるオブジェクト
  2. Spreadsheetオブジェクト
    Googleスプレッドシートを扱うためのオブジェクト
  3. Sheetオブジェクト
    Googleスプレッドシート内のシートを扱うオブジェクト
  4. Rangeオブジェクト
    Googleスプレッドシート内のシート内の範囲、セルなどを扱うオブジェクト

 そして、このオブジェクトを操作するためのそれぞれのメソッドが存在します。

 GAS(Google Apps Script)で上述の操作をする場合に一般的な書き方は次のようになります。

オブジェクト.メソッド()
 例えば、現在開いているアクティブなスプレッドシートを取得し、それを変数activSsheetに代入するGASは次ののようになります。
 
function myFunction() {
const activSsheet = SpreadsheetApp.getActiveSpreadsheet();
}
コラム
 あなたが開いたGoogleスプレッドシートには固有のスプレッドシートIDやシートIDが付きます。
 https://docs.google.com/spreadsheets/d/spreadsheetID/edit#gid=sheetID
 以下は私のあるスプレッドシートのURLを見たものです。
 https://docs.google.com/spreadsheets/d/1hhMLik0n8wzwurs6X2DLR3165-DRbo3WUC_TmdGzHL0/edit#gid=1964744276       ↑  ↑
                  ↑         スプレッドシートID
                シートID

スプレッドシートの読み込み及びGASの起動

学習するためのスプレッドシートファイルのコピーの作成

 GASでスプレッドシート、シート、範囲を学習していく上で必要なスプレッドシートファイルのコピーを作成します。

 以下のURLをクリックすると、ドキュメントのコピー画面が表示されるので、「コピーを作成」をクリックします。

https://docs.google.com/spreadsheets/d/1V8w7--KMsqDBM8Vbclxezf3KNlYFA0usWZIfEuGhLをクリックして9Y/copy

GASの起動

 上部メニューの「ツール」⇒「スプリクトエディター」をクリックすると、無題のプロジェクトと言う名前のGASが立ち上がります。

 

スプレッドシート(Spreadsheet)のメソッド

 スプレッドシートのメソッドとして、名前変更とコピーの2つににいて紹介します。

アクティブなスプレッドシートの名前変更

 GASスクリプトの名前(無題のプロジェクト)を「アボカドの価格」に変更しておきましょう。

 次に学習するために読み込んだGoogleスプレッドシートの名前「無題のスプレッドシート」の名前を「シアトルのポートランドでの2017年のアボカド価格」に変更します。

 名前変更のメソッドは、次のように書きます。

SpreadsheetApp.getActiveSpreadsheet().rename(”変更する名前”);

 実際のGASのコードは次にようにします。

function renameSpreadsheet() {
SpreadsheetApp.getActiveSpreadsheet().rename("シアトルのポートランドでの2017年のアボカド価格");
}

 結果は次の通りです。

アクティブシートのコピー

 次は、読み込んだGoogleスプレッドシートのシートが1つしかないので、そのコピーを作成します。

 その時のメソッドはの書き方は次のようになります。

SpreadsheetApp.getActiveSpreadsheet().duplicateActiveSheet();
function duplicateAndOrganizeActiveSheet() {
//現在アクティブなスプレッドシートを取得し、それを変数mySSに代入
const mySS = SpreadsheetApp.getActiveSpreadsheet();
//現在アクティブなスプレッドシートのシートをコピーして、それを変数duplicateSheetに代入
const duplicateSheet = mySS.duplicateActiveSheet();
}

 結果は次の通りです。

シート(Sheet)メソッド

シートのメソッドとして、シートの名前変更と列幅の変更の2つににいて紹介します。

シート名の変更

 読み込んだGoogleスプレッドシートのシートがをコピーして。そのシート名を変更してみましょう。

 その時のメソッドはの書き方は次のようになります。

SpreadsheetApp.getActiveSpreadsheet().duplicateActiveSheet().setName("変更する名前")
function duplicateAndOrganizeActiveSheet() {
//現在アクティブなスプレッドシートを取得し、それを変数mySSに代入
const mySS = SpreadsheetApp.getActiveSpreadsheet();
//現在アクティブなスプレッドシートのシートをコピーして、それを変数duplicateSheetに代入
const duplicateSheet = mySS.duplicateActiveSheet();
// コピーしたシート名をSheet_シートIDに変更
duplicateSheet.setName("Sheet_" + duplicateSheet.getSheetId());
}

 結果は次の通りです。

シートの列幅の変更

 アクティブシートの列幅を変更して見易くしましょう。

 その時のメソッドはの書き方は次のようになります。

★ 入力された文字数に合わせて列幅を調整
SpreadsheetApp.getActiveSpreadsheet().duplicateActiveSheet().autoResizeColumns(startColumn, numColumns);
★ 指定した行数を固定(フリース)
 SpreadsheetApp.getActiveSpreadsheet().duplicateActiveSheet().setFrozenRows(rows);
function duplicateAndOrganizeActiveSheet() {
//現在アクティブなスプレッドシートを取得し、それを変数mySSに代入
const mySS = SpreadsheetApp.getActiveSpreadsheet();
//現在アクティブなスプレッドシートのシートをコピーして、それを変数duplicateSheetに代入
const duplicateSheet = mySS.duplicateActiveSheet();
// コピーしたシート名をSheet_シートIDに変更
duplicateSheet.setName("Sheet_" + duplicateSheet.getSheetId());
// コピーした新しいシートの列幅を1列から5列分文字幅により自動調整
duplicateSheet.autoResizeColumns(1, 5);
// コピーした新しいシートの最初の2行分を固定行として指定
duplicateSheet.setFrozenRows(2);
}

 結果は次の通りです。

Rangeオブジェクトのメソッド

 ここでは、Rangeオブジェクトのメソッドとして、範囲移動と範囲並び替えの2つを紹介します。

範囲移動

 アクティブシート内の範囲を移動をしてみましょう。

 その時のメソッドの書き方は次のようになります。

★ Range範囲の取得
SpreadsheetApp.getActiveSpreadsheet().duplicateActiveSheet().getRange(”Range範囲”):
★ Range範囲の移動
 SpreadsheetApp.getActiveSpreadsheet().duplicateActiveSheet().getRange(”Range範囲”).moveTo(”移動先”);
function duplicateAndOrganizeActiveSheet() {
//現在アクティブなスプレッドシートを取得し、それを変数mySSに代入
const mySS = SpreadsheetApp.getActiveSpreadsheet();
//現在アクティブなスプレッドシートのシートをコピーして、それを変数duplicateSheetに代入
const duplicateSheet = mySS.duplicateActiveSheet();
// コピーしたシート名をSheet_シートIDに変更
duplicateSheet.setName("Sheet_" + duplicateSheet.getSheetId());
// コピーしたあたらっシシートの列幅調整と2行の固定行の指定
duplicateSheet.autoResizeColumns(1, 5);
duplicateSheet.setFrozenRows(2);
// F列をC列に移動
var myRange = duplicateSheet.getRange("F2:F");
myRange.moveTo(duplicateSheet.getRange("C2"));
}

 結果は次の通りです。

範囲並べ替え

 アクティブシート内の範囲内の値の並び替えをしてみましょう。

 その時のメソッドはの書き方は次のようになります。

★ Range範囲の取得
SpreadsheetApp.getActiveSpreadsheet().duplicateActiveSheet().getRange(”Range範囲”):
★ Range範囲の並べ替え
 SpreadsheetApp.getActiveSpreadsheet().duplicateActiveSheet().getRange(”Range範囲”).sort(並べ替えする列);
function duplicateAndOrganizeActiveSheet() {
//現在アクティブなスプレッドシートを取得し、それを変数mySSに代入
const mySS = SpreadsheetApp.getActiveSpreadsheet();
//現在アクティブなスプレッドシートのシートをコピーして、それを変数duplicateSheetに代入
const duplicateSheet = mySS.duplicateActiveSheet();
// コピーしたシート名をSheet_シートIDに変更
duplicateSheet.setName("Sheet_" + duplicateSheet.getSheetId());
// コピーしたあたらっシシートの列幅調整と2行の固定行の指定
duplicateSheet.autoResizeColumns(1, 5);
duplicateSheet.setFrozenRows(2);
// F列をC列に移動
var myRange = duplicateSheet.getRange("F2:F");
myRange.moveTo(duplicateSheet.getRange("C2"));
// 列C内のアボガドの値段による並べ替え
myRange = duplicateSheet.getRange("A3:D55");
myRange.sort(3);
}

 結果は次の通りです。

おわりに

 如何だったでしょうか?

 スプレッドシートサービスとは?、スプレッドシートの読み込み及びGASの起動、学習するためのスプレッドシートファイルのコピーの作成、GASの起動、スプレッドシート(Spreadsheet)のメソッド、アクティブなスプレッドシートの名前変更、アクティブシートのコピー、シート(Sheet)メソッド、シート名の変更、シートの列幅の変更、Rangeオブジェクトのメソッド、範囲移動、範囲並べ替えなどについて解説してきました。

 この記事が少しでもあなたにとって役に立てればこれほど嬉しいことはありません。

以上です。

 

 

コメント

タイトルとURLをコピーしました