みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
Google Apps ScriptでBotを作りながらその基本を学んでいくシリーズです。
前回の記事はコチラです!
スプレッドシートで行数・列数を指定してセル範囲を取得するgetRangeメソッドの使い方についてお伝えしました。
さて、今回はGoogle Apps Scriptでスプレッドシートのセル範囲をクリアする方法についてお伝えします。
では、行ってみましょう!
前回までのおさらい
題材とするスプレッドシートはコチラです。
この名言の数々を定期的に一つずつ通知をしていくというBotを作りたいということですね。
前回までで作成したスクリプトがコチラです。
function myFunction() { const sheet = SpreadsheetApp.getActiveSheet(); const lastRow = sheet.getLastRow(); for(let i = 2; i <= lastRow; i++) { if(!sheet.getRange(i, 4).getValue()){ console.log(sheet.getRange(i, 1).getValue()); sheet.getRange(i, 4).setValue(true); if(i >= lastRow) { console.log(sheet.getRange(2, 4, lastRow - 1).getA1Notation()); } break; } } }
シートの2行目から最終行までなめていって、TRUEでなければ通知(7行目の通り、まだ通知の代わりにconsole.logになっていますが)をするというものです。
前回から、10~12行目の処理を作っていますが、行数がシートのデータがある最終行を超えた場合に、D列に入力されたTRUEを全部削除したいわけです。
現時点では、getA1Notationメソッドでそのセル範囲のアドレスを出力するのみとなっていますが、このセル範囲をクリアしていく部分を今回作っていきます。
スプレッドシートのセル範囲をクリアする
さて、セル範囲をクリアするメソッドとして2つほど紹介していきましょう。
clearメソッドは全てをクリア
一番それっぽいメソッドはclearメソッドですね。
書式はシンプルに以下のようになります。
このメソッドはセル範囲をクリアするメソッドです。
で、何をクリアするかというと「全て」をクリアするんですね。
その「何を」という点が、後述するclearContentメソッドとの違いになります。
clearContentメソッドはコンテンツをクリア
そのclearContentメソッドですが、こちらの書式は以下の通りです。
こちらもセル範囲をクリアするメソッドですが、クリアする内容が限定的です。
というのも、こちらはコンテンツだけをクリアするメソッドになります。
コンテンツというのは、入力されている値や数式などの内容を指します。
したがって、背景、フォント、罫線などの書式やデータの入力規則、コメントなどはクリアの対象外となります。
セル範囲をクリアするその他のメソッド
その他、以下のようなメソッドがありますので、必要に応じて使ってみてくださいね。
- 書式をクリアする:clearFormatメソッド
- データの入力規則をクリアする:clearDataValidationsメソッド
- コメントをクリアする:clearNoteメソッド
Bot通知が最終行に達したらセル範囲をクリアする
今回の場合、どれを使うのが良いのか…わかりますか?
冒頭でご覧いただいた通り、シートには書式設定は一切していませんので、clearメソッドでもclearContentメソッドでもどちらでもOKです。
ただ、今後、書式の設定をする可能性も鑑みて、今回はclearContentメソッドを使うことにしましょう。
スクリプトを修正すると以下のようになりますね。
function myFunction() { const sheet = SpreadsheetApp.getActiveSheet(); const lastRow = sheet.getLastRow(); for(let i = 2; i <= lastRow; i++) { if(!sheet.getRange(i, 4).getValue()){ console.log(sheet.getRange(i, 1).getValue()); sheet.getRange(i, 4).setValue(true); if(i >= lastRow) { sheet.getRange(2, 4, lastRow - 1).clearContent(); } break; } } }
11行目をclearContentメソッドを使った処理に変更しただけですね。
実行結果
では、テストしてみましょう。
以下のように、最終行だけD列が空欄の状態にあるとします。
次に実行をすると、最後の名言がBot通知(ログ出力)された後、iがlastRowと等しくなりますから、10行目のif文の条件式が成立しますよね。
ですから、以下のようにif文の中の処理が実行され、D列の2行目から最終行までのセルの内容がクリアされるというわけです。
まとめ
以上、Google Apps Scriptでスプレッドシートのセル範囲をクリアするいくつかの方法についてお伝えしました。
clearメソッドとclearContentメソッドの使い分けについて、バッチリ理解いただけたのではないかと思います。
さて、次回ですがいよいよチャットへの通知の部分に入りますが、まずはその前提知識についてお伝えしています
どうぞお楽しみに!
連載目次:超初心者向けGASでBotを作りながら基礎を学ぶ
Google Apps Script(GAS)をはじめるためのメリットは山程ありますが、何を作ったらいいの?と悩んでしまうこともありますよね。そんな時に、おすすめしたいのが「Bot」の作成です。このシリーズでは、超初心者向けにGASでBotを作る方法を題材としながら、GASプログラミングの一通りの流れと書き方について学んでいきます。- 【初心者向けGAS】本当の最初の一歩!スクリプトエディタでプロジェクトを開く
- 【初心者向けGAS】はじめてのスクリプトを作成し、保存し、実行する
- 【初心者向けGAS】プログラミングに必須の変数&定数の使い方とデータ型について
- 【初心者向けGAS】ログを表示するconsole.logの使い方とテンプレート文字列
- 【初心者向けGAS】スクリプト実行時の「承認」でびっくりしないために
- 【初心者向けGAS】Spreadsheetサービスの「オブジェクト」の基礎の基礎を知ろう
- 【初心者向けGAS】スプレッドシートのシートを取得する2つの方法
- 【初心者向けGAS】スプレッドシートのセル・セル範囲とその値を取得する方法
- 【初心者向けGAS】for文を使ったスプレッドシートの繰り返しの超基本
- 【初心者向けGAS】条件分岐をするif文の使い方の超基本
- 【初心者向けGAS】スプレッドシートのセルに値を入力する基礎の基礎
- 【初心者向けGAS】条件に応じてループを制御する2つの方法~break文とwhile文~
- 【初心者向けGAS】スプレッドシートのセル範囲を行数・列数を使って取得する
- 【初心者向けGAS】スプレッドシートのセル範囲をクリアするいくつかの方法
- 【初心者向けGAS】Google Apps ScriptでWeb APIを活用するための基礎知識
- 【初心者向けGAS】面倒なことはライブラリに任せよう!その概要と追加の方法
- 【初心者向けGAS】Chatworkのマイチャットにメッセージを送る最も簡単な例
- 【初心者向けGAS】Google Apps Scriptで別の関数を呼び出すfunctionの書き方
- 【初心者向けGAS】時限式のイベントトリガーを設置して決まった時刻にBotを送信する方法
- 【初心者向けGAS】プロパティストアの概要とスクリプトプロパティの編集方法
- 【初心者向けGAS】スクリプトプロパティを操作してそのデータを取り出す方法
- 【初心者向けGAS】スプレッドシートのセル範囲の値を二次元配列として取得して取り扱う方法
- 【初心者向けGAS】Chatworkのメッセージ記法でBot送信するメッセージを装飾する方法
- 【初心者向けGAS】Google Apps Scriptのドキュメンテーションコメントの書き方