ADVERTISEMENT

【Googleスプレッドシート】Apps Scriptでセルにコメントを追加する!setNoteの使い方

【Googleスプレッドシート】Apps Scriptでセルにコメントを追加する!setNoteの使い方
🛡️ 超解決

Googleスプレッドシートでセルにメモやコメントを追加したいと思ったことはありませんか。手動で一つずつ追加するのは手間がかかり、特に大量のデータがある場合には非効率です。この記事では、Apps ScriptのsetNoteメソッドを使って、プログラムでセルにコメントを追加する方法を詳しく解説します。これを覚えれば、一括処理や条件に応じたコメント挿入が簡単にできるようになります。

【要点】setNoteメソッドでセルにコメントを追加する

  • setNote(文字列): 指定したセルに文字列のメモ(吹き出し)を追加します。
  • getNote(): セルに既存のメモがあるか確認し、内容を取得します。
  • clearNote(): セルに設定されたメモを削除します。
  • ループ処理との組み合わせ: 複数セルに一括でメモを追加する場合に便利です。

ADVERTISEMENT

setNoteメソッドの概要とできること

`setNote`は、スプレッドシートのセルに「メモ」を追加するためのApps Scriptのメソッドです。メモとは、セルに付箋のように表示される吹き出しのことです。これは、手動で「挿入」→「メモ」から追加するものと同じです。`setNote`を使えば、スクリプトから任意のテキストをセルに書き込めます。例えば、データの説明、計算結果の補足、エラーフラグなどを自動で表示できます。メモはセルの値を変更せず、付加情報として残るため、データ管理に役立ちます。前提条件として、Googleスプレッドシートのスクリプトエディタ(Apps Script)を使用します。スクリプトエディタは、メニューの「拡張機能」→「Apps Script」から開けます。

setNoteの基本的な使い方

ここでは、単一のセルにメモを追加する基本手順を説明します。例として、A1セルに「これはテストメモです」というメモを追加します。

スクリプトエディタを開く

まず、対象のスプレッドシートを開きます。メニューバーから「拡張機能」→「Apps Script」を選択してスクリプトエディタを起動します。新しいプロジェクトが開きます。デフォルトの関数名は`myFunction`になっていますが、ここでは新しく関数を作成します。

コードを記述する

スクリプトエディタに以下のコードを入力します。

function addNoteToCell() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var cell = sheet.getRange('A1');
  cell.setNote('これはテストメモです');
}

`SpreadsheetApp.getActiveSheet()`で現在アクティブなシートを取得します。`getRange(‘A1’)`でセルを指定し、`setNote`でメモを設定します。メモの文字列はシングルクォートまたはダブルクォートで囲みます。

スクリプトを実行する

コードを入力したら、保存ボタン(フロッピーディスクのアイコン)をクリックして保存します。関数名`addNoteToCell`を選択し、実行ボタン(再生マーク)をクリックするとスクリプトが実行されます。初回実行時には権限の承認を求められますので、内容を確認して承認します。実行後、スプレッドシートに戻ってA1セルにマウスを重ねると、吹き出しで「これはテストメモです」と表示されます。

応用: 複数のセルに一括でメモを追加する

ループ処理を使えば、複数のセルに自動でメモを追加できます。例えば、A列のデータに対して、B列の値をメモとして追加する場合の手順を説明します。

コード例: 範囲内のセルにループでメモを追加

以下のコードは、A1:A10の各セルに対して、対応するB列の値をメモとして追加します。

function addNotesBulk() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var dataRange = sheet.getRange('A1:A10');
  var values = dataRange.getValues();
  for (var i = 0; i < values.length; i++) {
    var cell = sheet.getRange(i+1, 1); // A列
    var noteText = '対応するB列の値: ' + sheet.getRange(i+1, 2).getValue();
    cell.setNote(noteText);
  }
}

このスクリプトでは、`getValues()`でA列のデータを取得し、各行をループしています。`sheet.getRange(i+1, 2)`でB列の値を取得し、文字列に結合して`setNote`で設定します。実行すると、A1からA10の各セルにB列の値がメモとして表示されます。

ADVERTISEMENT

注意点とよくあるトラブル

`setNote`を使用する際には、いくつかの注意点があります。ここでは、よくある失敗とその対処法を紹介します。

メモの文字数制限

メモには文字数制限があります。1つのメモに最大500文字までしか設定できません。それ以上の長いテキストを設定しようとすると、エラーは発生しませんが、途中で切り詰められます。長い説明が必要な場合は、文字数を調整するか、別のセルに分割してメモを設定する方法を検討してください。

setNoteはメモを上書きする

同じセルに対して`setNote`を複数回実行すると、以前のメモは新しいメモで上書きされます。メモを追加ではなく、既存のメモに追記したい場合は、一度`getNote()`で現在のメモを取得し、文字列を連結してから再度`setNote`を呼び出す必要があります。

アクティブなシートが正しくない

`getActiveSheet()`は現在スクリプトを実行しているスプレッドシートのアクティブシートを取得します。意図しないシートにメモが追加されることを防ぐため、シート名で明示的に指定することをおすすめします。例えば、`var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート1');`のようにします。

setNoteとsetCommentの違い

スプレッドシートには「メモ」と「コメント」の2種類があります。`setNote`はメモを、`setComment`はコメント(スレッド形式)を追加します。以下の表で違いをまとめます。

項目 setNote setComment
表示形式 吹き出し(メモ) スレッド形式(コメント)
返信・解決 不可 可能(スレッドとして会話できる)
文字数制限 500文字 約2000文字
削除方法 clearNote() または手動 removeComment() または手動
使用用途 簡単な注釈や注意書き 議論やレビュー

用途に応じてメモとコメントを使い分けましょう。手軽に情報を残したい場合は`setNote`、チームでやり取りが必要な場合は`setComment`が適しています。

まとめ

この記事では、Apps Scriptの`setNote`メソッドを使ってセルにメモを追加する方法を解説しました。基本は`cell.setNote('テキスト')`の一行で、ループ処理と組み合わせれば大量のセルにも一括でメモを追加できます。上書きや文字数制限に注意すれば、データの補足情報を自動化できます。まずはサンプルコードをコピーして、自分のシートで試してみてください。応用として、条件に応じてメモの内容を変えたり、他のシートから値を取得してメモに反映することも可能です。`setNote`の他に`getNote`や`clearNote`も覚えておくと、メモの管理がさらに便利になります。

ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。