*当ブログではアフェリエイト広告を利用しています。

GAS

【GAS】セル内消去。シートかセルで挙動が異なるので注意!

GAS セル内消去
momeq
モー
モー

今回はGAS(Google Apps Script)のセル内消去を見ていきます。VBAと比べ、シートを指定できます、挙動に癖があるような気がしますね。

ニャー
ニャー

よく使うのは、 Clear()だと思うけど、全て消せない点に注意する必要があるんだにゃ。

この記事では、

  • GASでセル内の値などを消去する方法
  • 削除先がシートがセルかで挙動が異なること
  • clear関数で消せる範囲とオプション、限界点
  • 細かい指定ができるclearの兄弟関数について

を学べます。

【オプションなし】clear()

モー
モー

まずは、clear()から。全ては消せないけど、オプションなしだと値と数式、フォーマットを削除できます。

シートを指定

// 値と数式、フォーマットを削除
sheet.clear();

セル範囲を指定

// 値と数式、フォーマットを削除
sheet.getRange(1, 2, 5, 1).clear();

clear(オプション)

モー
モー

オプションとして引数に特定の値を渡すと、消去できるものが変わります。

ニャー
ニャー

シートを指定するか、セル範囲を指定するかで、オプションの種類が少し異なる点に注意だにゃ。

シートを指定

与えられた詳細オプション指定でシートやフォーマットをクリアします。

オプションタイプ説明
contentsOnlyBoolean内容をクリアするかどうか。
formatOnlyBooleanフォーマットをクリアするかどうか。
commentsOnlyBooleanメモだけをクリアするかどうか。
// コンテンツだけ消去
sheet.clear({contentsOnly: true});

セル範囲を指定

指定された詳細オプションで指定されているように、コンテンツの範囲、フォーマット、データの入力規則、および/またはコメントをクリアします。デフォルトでは、すべてのデータがクリアされています。

名前タイプ説明
commentsOnlyBooleanメモだけをクリアするかどうか。
contentsOnlyBoolean内容だけをクリアするかどうか。
formatOnlyBooleanフォーマットのみをクリアするかどうか。
validationsOnlyBooleanデータの入力規則のみをクリアするかどうか。
skipFilteredRowsBooleanフィルタリングされた行をクリアしないようにするかどうか。
// フォーマット、データの入力規則、メモを削除
sheet.getDataRange().clear({formatOnly: true, validationsOnly: true, commentsOnly: true})

条件付き書式クリア[clearConditionalFormatRules()]

ニャー
ニャー

clearConditionalFormatRules()はシートを指定して、使えるんだにゃ。セル範囲指定では使えないんだにゃ。

シートを指定

シートからすべての条件付き書式規則をクリアします。空の配列を入力としてsetConditionalFormatRules(rules)を呼び出すのと同じです。

// 条件付き書式だけクリア
sheet.clearConditionalFormatRules();

値クリア[clearContent(s)()]

モー
モー

値だけをクリアしたい場合はclearContent(s)()を使います。シートを指定するときはclearContents、セル範囲指定ではclearContentとsがつかなくなることに注意ですね。

シートを指定[clearContents()]

フォーマット情報を保持しながら、シートをクリアします。

// 値のみクリア
sheet.clearContents();

セル範囲を指定[clearContent()]

書式設定を変更せずに、範囲の内容をクリアします。

// 値のみクリア
sheet.getDataRange().clearContent();

書式クリア[clearFormat(s)()]

モー
モー

書式クリアの場合でも、末尾にsが付くかどうかでシートとセル範囲の指定で変わります。

シートを指定[clearFormat(s)()]


内容を保持しながら、書式設定シートをクリアします。

書式設定とは、セルの幅や高さではなく、[書式設定]メニューの選択で許可されているデータの書式設定方法(太字、斜体、条件付き書式など)を指します。

// 書式のみクリア
sheet.clearFormats();

セル範囲を指定[clearFormat()]

この範囲の書式設定をクリアします。
これにより、範囲内の1つまたは複数のセルのテキストフォーマットがクリアされますが、数値フォーマットの規則はリセットされません。

// 書式のみクリア
sheet.getDataRange().clearFormat();

メモクリア[clearNote(s)()]

メモの場合も、シートかセル範囲指定でsをつけるかどうかを変えるんだにゃ。

ニャー
ニャー

メモの場合も、シートかセル範囲指定でsをつけるかどうかを変えるんだにゃ。

シートを指定[clearNotes()]

シートのすべてのメモをクリアします。

// メモを削除
sheet.getDataRange().clearNote()

セル範囲を指定[clearNote()]

特定のセルまたは複数のセルのメモをクリアします。

// メモを削除
sheet.getDataRange().clearNote()

入力規則クリア[clearDataValidations()]

モー
モー

入力規則を消せるのは、セル範囲を指定した時だけですね。

セル範囲を指定

clearDataValidations()
範囲のデータの入力規則をクリアします。

//入力規則をクリア
sheet.getDataRange().clearDataValidations();

まとめ

以上見てきたように、GASでの消去はいろいろあります。

イメージとしては、clear()にオプションを付けて使うか、それぞれの特化したメソッドを使うかという感じに分類できて、基本どちらでも構わないと思います。好きな方を使ってください。

補足として、書式設定やコメントは消えず、一括での消去(シートの初期化)は簡単にはできないようです。

個人的なやり方としては、

  • 書式設定の削除 → 標準に戻す
  • コメントの削除 → コメント操作を使わず、メモを使用する
  • 初期化 → 複数のクリアの併用、シートの削除と再作成

が良いと考えています。

*コメントについては、できないわけではないようですが、標準機能によるGASからのコメント操作が難しいようです。

【VBA】セル内消去のやり方。全部消す方法から一部を消す方法まで。

記事URLをコピーしました