0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【GAS】スプレッドシートのフォームのリンク付きのシートも含めすべて削除する

Posted at

スプレッドシートのシートをすべて削除する

スプレッドシートで余計なシートをすべて削除して、新しい任意の名前のシートを作成したいということがある。そのような処理を実現するには、以下のように書けばよい。

function clearSpreadSheet(new_one_sheet_name){
    var ss = SpreadsheetApp.getActive()
    var sheets = ss.getSheets();//もともとあるシート一覧を取得
    ss.insertSheet(new_one_sheet_name);//シートがすべてなくなる場合は削除できないから先にinsertする
    for (sheet of sheets){
      ss.deleteSheet(sheet);
    }
}

new_one_sheet_nameに新しく生成したいシート名を入れれば、そのシートだけが存在するスプレッドシートを生成することができる。しかし、上のプログラムのままだと、グーグルフォームとリンクしているスプレッドシートがある場合にエラーが発生する。それを回避するために、以下のようにフォームとのリンクを解除する処理を追加する。

function clearSpreadSheet(new_one_sheet_name){
    var ss = SpreadsheetApp.getActive()
    var sheets = ss.getSheets();//もともとあるシート一覧を取得
    ss.insertSheet(new_one_sheet_name);//シートがすべてなくなる場合は削除できないから先にinsertする
    for (sheet of sheets){
      if (sheet.getFormUrl()){
        var form = FormApp.openByUrl(sheet.getFormUrl());
        form.removeDestination();
      }
      ss.deleteSheet(sheet);
    }
}

シートがグーグルフォームとリンクしている場合、sheet.getFormUrl()でリンク先のグーグルフォームのURLを取得することができる。あとは、そのURLをもとにFormApp.openByUrlでフォームを開いて、form.removeDestination()でリンクを解除できる。

0
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?