Google Apps Script(GAS)でスプレッドシートを新規シート作成

Google Apps Script GAS スプレッドシートを新規作成 サンプルコード付き
◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
【5/21開催】Azure OpenAI ServiceによるRAG実装ガイドを公開しました
生成AIを活用したユースケースで最も一番熱いと言われているRAGの実装ガイドを公開しました。そのガイドの紹介をおこなうイベントです!!
https://tech-lab.connpass.com/event/315703/

Google Apps Script(GAS)でGoogle Sheet(スプレッドシート)にて新規シートを追加する方法についてさくっと解説します。名前がかぶっているシートがある場合は、上書きしてSheetの変数を返答するところまでコード化しています。コピペで使えるサンプルコード付き:やさしくGASに入門するシリーズ

ご挨拶

ども!Google Apps Script(GAS)使っていますか?プロジェクト外のお仕事で、GASを使った自動化に取り組んでいた龍ちゃんです。ほんのちょっとしたことを自動化するのに、GASは最適な選択肢だと思います。よく使うシナリオとしては、GASでデータを取得してスプレッドシートにまとめるになります。その過程で、スプレッドシートの作成やシートの操作というのをよくやります。

前回は、シート内のセルの操作という観点に注目してまとめていました。ちょっと癖がありますが、一度覚えてしまえば結構便利なツールに大変身します。今回もGASとスプレッドシートのお話になります。

キホンのサンプルはすべて、公式のリファレンスに乗っています。戦える元気のある方は、こちらを隅から隅まで読んでみるのもアリだとは思います。慣れればこちらのほうが早いですが、元気のない方はようこそ( *´艸`)

今回取り扱うシナリオとしては以下になります。

  • スプレッドシート内で、新規シートを作成したい
  • 同一のシートがある場合は、新しく作り直したい

詰まる部分があったとするならば、同一のシート名にしようとしてエラーが吐かれたぐらいですかね。

Exception: シート名「****」はすでに存在しています。別の名前を入力してください。

最後のほうに、使いまわせる「新規シート作成:同盟シート削除機能付き」のサンプルコードを載せています。

それでは本題です。

新規シート作成

コマンドとしては、以下になります。

const sheetId = "xxxxxxxxxxxxxxxxxxxxxxxxxx"
const file = SpreadsheetApp.openById(sheetId)

const newSheet = file.insertSheet() //新規作成

newSheet.setName("test") // 名前変更

上のコードを実行してみると、対象のスプレッドシートに「test」というシートが作成されるかと思います。最後の行の「newSheet.setName("test")」を削除して実行すると、自動でナンバリングされたシートが生成されます。

上記のコードの問題点と解決策

さて、先ほどのコードは問題があります。コピペしたコードを二度走らせると、以下のエラーが表示されるかと思います。

Exception: シート名「****」はすでに存在しています。別の名前を入力してください。

画面の通りなのですが、同盟のシートを保存することができません。

使用するシナリオによると思うのですが、エラー回避を行うためにシート名が既に使われているかどうかを判定する必要があります。そのためのコードが以下になります。

const isSheetExist = file.getSheetByName(name)

if (isSheetExist) {
	// シートがある場合の処理
}else{
	// シートがない場合の処理
}

これは、シートを取得する際に使用します。ここに存在しないシート名を入力すると、undefindが返答されます。これによってシートがある場合とない場合の処理を振り分けることができます。

ちなみにですが、シートの削除は以下のコードで行うことができます。

const sheetId = "xxxxxxxxxxxxxxxxxxxxxxxxxx"
const file = SpreadsheetApp.openById(sheetId)

const sheet = file.getSheetByName(name)

file.deleteSheet(sheet) // シート削除

シートの削除は、存在しているシートを指定する必要があります。

既存のシートを削除して新規作成するサンプルコード

それでは、サンプルコードを置いておきます。

const createSheet = (sheetId, name) => {
  const file = SpreadsheetApp.openById(sheetId)
  const newSheet = file.insertSheet() // sheetの作成
  const isSheetExist = file.getSheetByName(name) // sheet名の取得
  if (isSheetExist) {
    file.deleteSheet(isSheetExist) // sheetの削除
  }
  newSheet.setName(name) // sheet名の変更

  return { sheet: file.getSheetByName(name) }
}

const sheetId = "xxxxxxxxxxxxxxx"
const { sheet } = createSheet(sheetId, "test")

createSheetにsheetIdと設定したい名前を渡すことで、既存のシートを削除して新規作成したシートを返答してくれます。

こちらのコードは汎用度合いが高いと思うので、是非自分のメモに追加しておきましょう。

終わりに

ども!このコードは僕自身、使いまわしています。データ取得の自動化周りをする際には、必須レベルです。

プログラミング全般に言えることですが、細やかなTipsはいっぱいあります。それを組み合わせて使用することが難しいです。特定のシナリオに限定して使うことができるコピペコードを量産していきたいと思います。

それではまた!!

 

アバター画像
About 龍:Ryu 107 Articles
2022年入社で主にフロントエンドの業務でTailwindと遊ぶ日々。お酒とうまいご飯が好きで、運動がちょっと嫌いなエンジニアです。しゃべれるエンジニアを目指しておしゃべりとブログ執筆に注力中(業務もね)//
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる