Google Apps Script (GAS) を使用すると、スプレッドシートの定型業務を自動化できます。その中でも clearNote() メソッドは、セルに付与された「メモ」だけをピンポイントで削除できる便利な機能です。
この記事では、clearNote() メソッドの基本的な使い方から、実務で役立つ応用テクニックまでを詳しく解説します。

スプレッドシートの「メモ」とclearNote()メソッドの役割
スプレッドシートの「メモ」は、セルに対する補足情報や備忘録を記録するための機能です。共同編集者への通知機能がある「コメント」とは異なり、主に個人的な注釈として利用されます。
clearNote() メソッドは、このメモをスクリプトによって一括で削除するための機能です。手作業で一つずつ削除する手間を省き、シートのメンテナンスやデータ初期化処理を効率化します。
clearNote()メソッドの使い方
基本的な構文
clearNote() メソッドは、Range オブジェクトに対して呼び出します。
// 指定した範囲(range)内のすべてのメモを削除
range.clearNote();
引数は不要で、指定した範囲内のすべてのメモが削除されます。
単一セルのメモを削除する
特定のセルのメモだけを削除する場合は、以下のように記述します。
function clearSingleCellNote() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート1');
// B2セルのメモを削除
sheet.getRange('B2').clearNote();
}
複数セルのメモを一括削除する
特定の範囲に含まれるすべてのメモを一括で削除することも可能です。
function clearRangeNotes() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('売上データ');
// C3からF20の範囲にあるメモをすべて削除
const dataRange = sheet.getRange('C3:F20');
dataRange.clearNote();
}
この方法は、定期的に更新されるデータシートのクリーンアップ作業などに役立ちます。
実用例:条件に応じてメモを削除する
特定の条件に一致するメモだけを選択的に削除することもできます。例えば、メモの内容に [TEMP] という文字列が含まれるものだけを削除するスクリプトです。
function clearConditionalNotes() {
const sheet = SpreadsheetApp.getActiveSheet();
const range = sheet.getRange("A2:A" + sheet.getLastRow());
const notes = range.getNotes(); // 範囲内のメモを二次元配列で取得
for (let i = 0; i < notes.length; i++) {
if (notes[i][0].includes('[TEMP]')) {
// 条件に一致した場合、対応するセルのメモを削除
sheet.getRange(i + 2, 1).clearNote();
}
}
}
これにより、一時的なメモだけを効率的に削除でき、重要な情報を誤って消すリスクを防ぎます。
他のクリア系メソッドとの比較
GASには、clearNote() 以外にもデータを削除するためのメソッドがいくつか存在します。目的に応じて適切に使い分けることが重要です。
| メソッド名 | 対象範囲 | 削除内容 |
|---|---|---|
clear() | セル | 値、書式、メモ、データ検証などすべて |
clearContent() | セル | 値と数式のみ |
clearNote() | セル | メモのみ |
clearNote() はメモに特化しているため、セルの値や書式を保持したままメモだけを整理したい場合に最適です。
高度なテクニック:ログ記録と安全対策
メモ削除のログを記録する
重要な情報を誤って削除しないために、削除前にメモの内容を別のシートに記録しておくことをお勧めします。
function clearNotesWithLogging() {
const sheet = SpreadsheetApp.getActiveSheet();
const range = sheet.getRange('B2:D10');
const notes = range.getNotes();
const logSheet = SpreadsheetApp.getActive().getSheetByName('監査ログ') || SpreadsheetApp.getActive().insertSheet('AuditLog');
for (let r = 0; r < notes.length; r++) {
for (let c = 0; c < notes[r].length; c++) {
if (notes[r][c] !== '') {
const cell = range.getCell(r + 1, c + 1);
// ログシートに記録
logSheet.appendRow([new Date(), cell.getA1Notation(), notes[r][c]]);
// メモを削除
cell.clearNote();
}
}
}
}
メモの存在を確認してから処理を実行
広大な範囲に対して処理を行う場合、不要な処理を避けるために、メモが存在するかどうかを事前に確認するとパフォーマンスが向上します。
function safeClearNotes() {
const sheet = SpreadsheetApp.getActiveSheet();
const range = sheet.getRange('A1:Z1000');
const notes = range.getNotes();
// flat()で一次元配列に変換し、空でないメモが存在するか確認
if (notes.flat().some(note => note !== '')) {
range.clearNote();
console.log('指定範囲内のメモを削除しました。');
} else {
console.log('指定範囲にメモは見つかりませんでした。');
}
}
まとめ
clearNote() メソッドは、スプレッドシート内のメモを効率的に管理するための強力なツールです。基本的な削除から条件付きの処理、安全対策まで、さまざまな応用が可能です。
手動での煩雑なメモ管理から脱却し、スクリプトによる自動化で作業効率を大幅に向上させましょう。


GoogleAppsScriptで、スプレッドシートのセルにメモを挿入・削除するスクリプトの書き方です、メモを改行する時の改行コードについても解説します。メモは、まさしくメモとして各種注意事項や、変更履歴等として使う事の出来る機能です。ただし、「コメントの挿入」とは違います。
セル範囲に設定されているメモのみクリアする。 サンプルコード // 現在アクティブなシートにある A1:B5 のセル範囲を取得 var range = SpreadsheetApp.getActive().getRange(‘A1:B5’); // そのセル範囲に設定されているメモのみクリア range.clearNote(); // 現在アクティブなシートにある A1:B5 のセル範囲を取得 var range = SpreadsheetApp.getActive().getRange(‘A1:B5’); 引数 無し。 戻り値 Range オブジェクト – そのセル範囲自身 この記事が気に入ったら いいねしよう! 最新記事をお届けします。