シートを作成するコード
まずスプレッドシートに「シート名を指定してシートを追加」する処理は以下のようになります。
シート追加
// スプレッドシート指定
const ss = SpreadsheetApp.getActiveSpreadsheet();
// シートを追加
const sheet = ss.insertSheet("追加シート名");
同名のシートが存在しているとエラーになる
上記の処理は同名のシートが存在した状態で実行するとエラーになります。
Exception: シート名「*****」はすでに存在しています。別の名前を入力してください。
そこで、エラーにならないように同名のシートが存在するかを確認して
存在していたら、そのシートを使う
存在しない場合は、シートを新規作成
されるようにしていきます。
シートの存在チェック
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");
}
参考