GoogleAppsScript

GAS(Google Apps Script)でシートを取得・複製・削除する方法

GASでシートを操作する方法

Google Apps Script(GAS)を使用して、Google スプレッドシートのシートを取得、複製、削除する方法を解説します。

getActiveSheetメソッド(取得中のシートを取得)

getActiveSheetメソッドは、スプレッドシートやデータベースなどのデータ操作において、現在アクティブなシートやテーブルを取得するために使用されます。

このメソッドは、特定のデータ操作が行われる際に、現在の作業対象となるシートやテーブルを指定するのに役立ちます。

getActiveSheetメソッドの書式

書式

getActiveSheet()

サンプル: アクティブなシートの取得

// アクティブなシートの取得
let activeSheet = getActiveSheet();// 現在アクティブなシートのオブジェクトを変数に格納

getActiveSheetメソッドの注意点

getActiveSheet メソッドを使用する際に注意すべきいくつかのポイントがあります。

存在しないシートやテーブルへのアクセス

getActiveSheet メソッドは、アクティブなシートやテーブルを取得するためのものです。

しかし、存在しないシートやテーブルにアクセスしようとすると、エラーが発生する可能性があります。

そのため、取得した結果が null であるかどうかを確認し、エラーハンドリングを行うことが重要です。

アクセス権の確認

アクセス権の制限がある場合、アクティブなシートやテーブルにアクセスできない可能性があります。

データ操作を行う前に、アクセス権を確認し、必要な権限を持っていることを確保してください。

getSheetsメソッド(すべてのシートを取得)

getSheets()メソッドは、Googleスプレッドシート内のすべてのシートにアクセスするために使用されます。

このメソッドを使用すると、シートのリストを取得し、それらのシートに対して操作を実行できます。

getSheetsメソッドの書式

書式

getSheets()

サンプル: すべてのシートを取得

メソッドの基本的な使用法は非常にシンプルです。

以下は、getSheets() メソッドを使用してすべてのシートを取得する例です。

let spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
let sheets = spreadsheet.getSheets();

このコードでは、getSheets() メソッドを使用して、スプレッドシート内のすべてのシートを取得し、それらを sheets 配列に格納します。この後、sheets 配列を使用してシートにアクセスできます。

サンプル:特定の条件に合致するシートを取得

getSheets() メソッドはすべてのシートを取得しますが、特定の条件に合致するシートだけを取得することも可能です。

以下は、特定の名前に一致するシートを取得する例です。

let spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
let sheets = spreadsheet.getSheets();

let targetSheetName = "目的のシート名";
let targetSheet = sheets.find(sheet => sheet.getName() === targetSheetName);

このコードでは、getSheets() メソッドを使用してすべてのシートを取得し、Array.prototype.find() メソッドを使用して特定の名前に一致するシートを取得します。

これにより、特定のシートに簡単にアクセスできます。

getSheetsメソッドの注意点

存在しないシートへのアクセス

getActiveSheet メソッドは、アクティブなシートのリストを取得するためのものです。

しかし、アクティブなスプレッドシートが存在しない場合、エラーが発生する可能性がありますので注意が必要です。

getSheetByNameメソッド(指定のシート名のシートを取得)

getSheetByName(sheetName) メソッドは、スプレッドシート内の指定した名前(sheetName)を持つシートを取得するために使用されます。これにより、シートのデータや操作をスクリプトで制御することができます。

getSheetByNameメソッドの書式

書式

getSheetByName(sheetName)

引数タイプ動作
sheetNameString指定したシート名のシートを取得する

サンプル:指定した名前のシートを取得

let sheetName = "シートの名前";
let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);

このコードでは、sheetName に取得したいシートの名前を指定し、getSheetByName() メソッドを使用してシートを取得します。取得したシートは変数 sheet に格納され、その後の操作に使用できます。

サンプル:シートが存在しない場合の処理

let sheetName = "存在しないシートの名前";
let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);

if (sheet) {
  // シートが存在する場合の処理
  let data = sheet.getDataRange().getValues();
  // data を使用してデータ処理を行う
} else {
  Logger.log("指定した名前のシートは存在しません。");
}

指定した名前のシートが存在しない場合、getSheetByName() メソッドは null を返します。そのため、シートの存在を確認してから操作を行うことが重要です。以下はその例です。

getSheetByNameメソッドの注意点

getSheetByName() メソッドを使用する際に考慮すべき重要な注意点がいくつかあります。

以下に、getSheetByName() メソッドの注意点をいくつか説明します。

シート名の正確性

getSheetByName() メソッドは、引数として指定したシート名と完全に一致するシートを探します。

シート名が大文字と小文字を区別するため、シート名のスペルや大文字小文字を正確に指定する必要があります。

スペルミスや誤った大文字小文字の使用に注意しましょう。

シート名の変更に対する影響

シート名が変更された場合、getSheetByName() メソッドが以前のシート名ではシートを見つけられなくなります。

したがって、シート名を変更する場合は、スクリプト内の関連する部分も更新する必要があります。

insertSheetメソッド(指定の index に新しいシートを挿入)

insertSheet([name, index]) メソッドは、スプレッドシート内に新しいシートを挿入します。

このメソッドは、新しいシートの名前(name)と挿入位置(index)を指定できるため、スプレッドシートの特定の位置にシートを追加するのに役立ちます。

insertSheetメソッドの書式

書式

insertSheet([name, index])

引数タイプ説明
nameInteger新しいシートの名前
indexObject新しいシートの挿入位置

サンプル:新しいシートを末尾に挿入

新しいシートをスプレッドシートの末尾に挿入する場合、index パラメータを指定せずにメソッドを使用します。

SpreadsheetApp.getActiveSpreadsheet().insertSheet("新しいシートの名前");

このコードでは、insertSheet() メソッドを使用して、指定した名前の新しいシートをスプレッドシートの末尾に挿入します。

サンプル:指定した位置に新しいシートを挿入

新しいシートを特定の位置に挿入するには、index パラメータに挿入位置のインデックスを指定します。

SpreadsheetApp.getActiveSpreadsheet().insertSheet("新しいシートの名前", 2);

このコードでは、index パラメータに 2 を指定して、新しいシートをスプレッドシートの 2 番目の位置に挿入します。挿入位置は 0 から始まるインデックスで指定します。

insertSheetメソッドの注意点

インデックスの指定

insertSheet([name, index]) メソッドでは、新しいシートが挿入される位置を index パラメータで指定できます。

しかし、指定した index が既存のシート数を超える場合、エラーが発生します。

そのため、index を指定する際には、有効な値を確認することが重要です。

シート数の制限

Google スプレッドシートにはシートの最大数に制限があります。

スプレッドシートごとに異なる制限がありますが、一般的には1000シートまでと制限されています。

シートの挿入を行う前に、制限に注意しましょう。

duplicateActiveSheetメソッド(アクティブなシートを複製)

duplicateActiveSheet() メソッドは、アクティブなシートを複製します。このメソッドは、シートの内容をコピーして新しいシートを作成し、同じデータやフォーマットを持つ別のシートを生成するのに役立ちます。

duplicateActiveSheetメソッドの書式

書式

duplicateActiveSheet()

サンプル:アクティブなシートの複製

アクティブなシートを複製するには、単純に duplicateActiveSheet() メソッドを呼び出します。

SpreadsheetApp.getActiveSpreadsheet().duplicateActiveSheet();

このコードは、現在アクティブなシートを複製し、新しいシートをスプレッドシートに追加します。

複製されたシートは元のシートと同じ内容を持ちます。

サンプル:複製後のシートの名前変更

複製したシートの名前を変更することも可能です。新しいシートの名前を指定して、名前を変更できます。

let newSheetName = "複製されたシート";
SpreadsheetApp.getActiveSpreadsheet().duplicateActiveSheet().setName(newSheetName);

このコードは、アクティブなシートを複製し、それに続いて新しい名前を指定して名前を変更します。

duplicateActiveSheetメソッドの注意点

アクティブシートの確認

duplicateActiveSheet() メソッドは、アクティブなシートを複製します。

アクティブなシートが正確であることを確認し、誤って別のシートが複製されないようにしましょう。

シート名の一意性

複製されたシートの名前は、元のシート名に “コピー” などの接尾辞が付いたものになります。

新しい名前がすでに存在する場合、名前の重複が発生し、エラーが発生します。

シート名の一意性に気をつけ、適切な名前を選びましょう。

deleteSheetメソッド(指定したシートを削除する)

deleteSheet(sheet) メソッドは、指定したシートを削除します。

このメソッドは、不要なシートを削除したり、特定の条件下でシートを動的に削除する際に役立ちます。

書式

deleteSheet(sheet)

サンプル:指定したシートを削除

let sheetToDelete = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("削除したいシート名");
SpreadsheetApp.getActiveSpreadsheet().deleteSheet(sheetToDelete);

このコードは、getSheetByName() メソッドを使用して削除したいシートを取得し、それを deleteSheet() メソッドに渡して削除します。

deleteSheet(sheet) メソッドの注意点

データの喪失

deleteSheet(sheet) メソッドを使用すると、指定したシート内のすべてのデータが削除されます。

データを誤って削除しないように、注意深く操作しましょう。

アクティブなシートの確認

アクティブなシート(現在表示されているシート)を削除しようとすると、エラーが発生します。

アクティブなシートを確認し、誤ってアクティブなシートを削除しないようにしましょう。

deleteActiveSheetメソッド(アクティブなシートを削除する)

deleteActiveSheet() メソッドは、アクティブなシートを削除します。

このメソッドは、スクリプト内でシートをダイナミックに削除したり、不要なシートを手動で削除する際に役立ちます。

書式

deleteActiveSheet()

サンプル:アクティブなシートを削除

アクティブなシートを削除するには、単純に deleteActiveSheet() メソッドを呼び出します。

SpreadsheetApp.getActiveSpreadsheet().deleteActiveSheet();

このコードは、現在アクティブなシートを削除します。シートが削除された後は、削除したシートの次にアクティブなシートが表示されます。

deleteActiveSheetメソッドの注意点

データの喪失

アクティブなシートを削除すると、そのシート内のすべてのデータが失われます。

データを誤って削除しないように、注意深く操作しましょう。

アクティブシートの確認

deleteActiveSheet() メソッドは、現在表示されているアクティブなシートを削除します。

アクティブなシートが正確であることを確認し、誤って他のシートを削除しないようにしましょう。