LoginSignup
1
1

More than 1 year has passed since last update.

【GAS】シート作成時同名のシートが存在している場合のエラー対策

Posted at

シートを作成するコード

まずスプレッドシートに「シート名を指定してシートを追加」する処理は以下のようになります。

シート追加
// スプレッドシート指定
const ss = SpreadsheetApp.getActiveSpreadsheet();
// シートを追加
const sheet = ss.insertSheet("追加シート名");

同名のシートが存在しているとエラーになる

上記の処理は同名のシートが存在した状態で実行するとエラーになります。
Exception: シート名「*****」はすでに存在しています。別の名前を入力してください。

insertSheetError.jpg

そこで、エラーにならないように同名のシートが存在するかを確認して
存在していたら、そのシートを使う
存在しない場合は、シートを新規作成
されるようにしていきます。

シートの存在チェック

GASでシートの存在をチェックする方法は以下のようになります。

シートの存在チェック
// シートの取得 存在しない場合はエラーにならず null になる
const sheet = ss.getSheetByName("追加シート名");

// nullの場合シートが存在しない、 nullではない場合シートが存在すると判定
if (sheet === null) {
  console.log("シートが存在しません。")
} else {
  console.log("シートが存在します。")
}

同名のシートが存在しないときだけシートを追加

以下のコードで、シートが存在しないときだけシート追加処理が実行されます。

シートが存在しないときだけシートを追加
// シート名設定
const sheetName = "追加シート名";
// シート取得 存在しない場合 null になる
let sheet = ss.getSheetByName(sheetName);
// シートが存在しない場合 シートを作成
if (sheet === null) {
  sheet = ss.insertSheet(sheetName);
}

1行で書く

javascriptの仕様 「|| (OR) の左側がだったら、右の処理がされる」を利用して
「シートを取得してnullだったら、シート追加」を1行で書けます。

シートが存在しないときだけシートを追加
// シート取得、存在しない場合新規作成
const sheet = ss.getSheetByName(sheetName) || ss.insertSheet(sheetName);

全体のコード(コピペ用)

function insertSheetTest() {
  // スプレッドシート指定
  const ss = SpreadsheetApp.getActiveSpreadsheet();

  // シート名設定
  const sheetName = "追加シート名";
  // シート取得、存在しない場合新規作成
  const sheet = ss.getSheetByName(sheetName) || ss.insertSheet(sheetName);

  // シートオブジェクトへの処理例 A1セルに"aaa"書き込み
  sheet.getRange(1,1).setValue("aaa");

}

参考

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1