見出し画像

Google スプレッドシート のデータを全て削除する方法

質問があったので作ってみました!

この機能の前提は、

  • Google フォーム で回答を収集している

  • 収集している スプレッドシート のデータを毎日削除したい。

  • 毎日手作業で削除するのは面倒

という時にお使いいただけます!

[1] 準備

回答が収集されている スプレッドシート から、拡張機能 ⇨ Apps Script で編集画面を開きます!

[2] スクリプト

下記のプログラムをコピペしてください。

function deleteAllButFirstRow() {
  // スプレッドシートを開く
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();

  // シートを取得(アクティブなシートを使うか、名前で指定できます)
  var sheet = spreadsheet.getActiveSheet(); // アクティブなシートを取得
  // var sheet = spreadsheet.getSheetByName('フォームの回答 1'); // シート名でシートを取得

  // シートの最後の行と列を取得
  var lastRow = sheet.getLastRow();
  var lastColumn = sheet.getLastColumn();

  // 1行目以外のすべてのセルを削除
  if (lastRow > 1) {
    sheet.getRange(2, 1, lastRow - 1, lastColumn).clearContent();
  }
}

こんな感じですね。

このスクリプトは、1行目以外を削除するようにしてあります。
冒頭に書いたように、フォーム で使っている スプレッドシート を使うことを前提としているので、1行目は削除しないようにしてあります。

また、コピペした時の、5〜7行目にあるところですが。

  // シートを取得(アクティブなシートを使うか、名前で指定できます)
  var sheet = spreadsheet.getActiveSheet(); // アクティブなシートを取得
  // var sheet = spreadsheet.getSheetByName('フォームの回答 1'); // シート名でシートを取得

削除するシートの方法を2種類入れてあります。

今有効になっているのは、6行目のこちらです。

  var sheet = spreadsheet.getActiveSheet(); // アクティブなシートを取得

これは、

今!開いているシートを選択してね!

という意味です。

いろんなシートがあるから、ちゃんとフォームの回答が集めっているシートだけを指定したい場合は、

6行目の先頭に半角で // を入れて、7行目のこちらの // を削除して↓のような感じにしてください。

  // シートを取得(アクティブなシートを使うか、名前で指定できます)
  // var sheet = spreadsheet.getActiveSheet(); // アクティブなシートを取得
  var sheet = spreadsheet.getSheetByName('フォームの回答 1'); // シート名でシートを取得

これで、シート名で指定することができます。

専門的な説明としては(飛ばしてもらって良いです笑)

Google Apps Scriptで、var sheet = spreadsheet.getActiveSheet(); のコード行は、アクティブなシート(選択されているシート)を取得しています。

ここで使用されているメソッドについて詳しく説明します。

  1. getActiveSpreadsheet(): このメソッドは、現在開いているスプレッドシート(Googleスプレッドシート)を取得します。このメソッドは SpreadsheetApp オブジェクトで呼び出され、取得したスプレッドシートは spreadsheet 変数に代入されます。

  2. getActiveSheet(): このメソッドは、spreadsheet オブジェクト(Googleスプレッドシート)のアクティブなシートを取得します。アクティブなシートとは、スプレッドシート内で現在選択されている(ユーザーが操作中の)シートです。このメソッドは、spreadsheet オブジェクトで呼び出され、取得したシートは sheet 変数に代入されます。

このコード行を使うことで、アクティブなシートを取得し、その後の処理で使用できるようになります。アクティブなシートではなく、特定のシートを取得したい場合は、代わりに getSheetByName() メソッドを使ってシート名を指定します。例えば、次のように記述します。

上記は、ChatGPT で出力してくれました!🤣笑

続き

また、すでに別のスクリプトが色々と入っている場合には、

左上にある、+ボタンから、スクリプトをクリックします。

そうすると、↓のようになります。

新しくスクリプトを入れられるようになります!

ここに貼り付けても良いです!

貼り付けたら💾(保存)をしてくださいね!

[3] 実行

新しく追加したスクリプトなので、▶️実行をクリックして、権限の承認を行いましょう!

記事を見ていただいている方なら、もうこの辺りは大丈夫ですよね!😎

わからない!という方は↓を参照してください!

[4] トリガーの設定

次にトリガーを設定します!

左側にある⏰(トリガー)をクリック!

右下にあるトリガーを追加をクリック!

実行する関数を選択は、deleteAllButFirstRow に設定して、イベントのソースを選択時間主導型に変更してください!

毎日、スプレッドシート に溜まったデータを削除したい場合は、時間ベースのトリガーのタイプを選択日付ベースのタイマーにしてください!

必要に応じて適宜設定をしてください。
上記の設定だと、毎日午前0時から1時の間に、データが削除されます!

細かくは設定できないんですよね。
ざっくりなんです🤣笑
( 別にスクリプトを組めば毎日同じ時間に実行させることもできます)

ここまでできたら、右下の保存をクリックしてください!

また権限の承認プロセスがあるかもしれませんが、同じように許可をしてください!

これで完了です!

毎日決まった時間にデータが削除されます!
お試しください!!

こういうのってできるのかな?とかありましたらお気軽のコメント等ください!😆

また、削除されたデータの責任は負えませんので、別シートなどでテストをしてからお試しください。
スプレッドシート の場合は、変更履歴から復元することもできます。
(期間制限あり)

Twitter

Facebook

ポートフォリオ

YouTube チャンネル

いちばんやさしい Google Apps Script




何かと0から1を作るのは大変だと思います。学校はどこも似たような問題課題に対応していると思います。それなのに、先生って自分だけで頑張ろうとするんですよね。ボクの資料やnoteが1になって、学校ごとの現状に合わせてカスタムしていただければと思います‼️