googleスプレッドシートで名前範囲内のデータが更新された時にタイムスタンプを更新
function onEdit(e) {
var sheet = e.source.getActiveSheet();
var range = e.range;
var namedRange = e.source.getRangeByName("YourNamedRange"); // 名前付き範囲を指定
var timestampSheet = e.source.getSheetByName("YourTimestampSheet"); // タイムスタンプを表示するシートを指定
var timestampCell = timestampSheet.getRange("A1"); // タイムスタンプを表示するセルを指定
// 名前付き範囲内のセルが編集された場合
if (range.getA1Notation() === namedRange.getA1Notation() ||
(range.getRow() >= namedRange.getRow() && range.getRow() < namedRange.getLastRow() &&
range.getColumn() >= namedRange.getColumn() && range.getColumn() < namedRange.getLastColumn())) {
if (timestampCell) {
var currentDate = new Date();
var formattedDate = Utilities.formatDate(currentDate, Session.getScriptTimeZone(), "yyyy/MM/dd HH:mm");
timestampCell.setValue("Last Update Date: " + formattedDate); // 書式を指定してタイムスタンプを設定
}
}
}
名前付き範囲が複数ある場合
function onEdit(e) {
var sheet = e.source.getActiveSheet();
var range = e.range;
var timestampSheet = e.source.getSheetByName("YourTimestampSheet"); // タイムスタンプを表示するシートを指定
var timestampCell = timestampSheet.getRange("A1"); // タイムスタンプを表示するセルを指定
// 監視する名前付き範囲のリスト
var namedRanges = ["NamedRange1", "NamedRange2", "NamedRange3"]; // 監視する名前付き範囲を指定
// 監視する名前付き範囲のいずれかが編集された場合
for (var i = 0; i < namedRanges.length; i++) {
var namedRange = e.source.getRangeByName(namedRanges[i]);
if (namedRange) {
if (range.getA1Notation() === namedRange.getA1Notation() ||
(range.getRow() >= namedRange.getRow() && range.getRow() < namedRange.getLastRow() &&
range.getColumn() >= namedRange.getColumn() && range.getColumn() < namedRange.getLastColumn())) {
var currentDate = new Date();
var formattedDate = Utilities.formatDate(currentDate, Session.getScriptTimeZone(), "yyyy/MM/dd HH:mm");
timestampCell.setValue("Last Update Date: " + formattedDate); // 書式を指定してタイムスタンプを設定
break; // 1つの範囲が編集されたらループを終了
}
}
}
}Google スプレッドシートの「トリガー」を使用して、特定のセルが編集されたときに自動的に実行される「イベントハンドラー」です。具体的には、onEdit(e) 関数は、スプレッドシート内の任意のセルが編集されたときに自動的に呼び出されます。仕組みの説明
onEdit(e): この関数は、スプレッドシート内のセルが編集されるたびに自動的に実行されます。e はイベントオブジェクトで、どのセルが編集されたかなどの情報を含んでいます。
監視: スクリプトは、特定の名前付き範囲内のセルが編集されたかどうかを監視しています。もしその範囲内のセルが編集された場合、指定したセルにタイムスタンプを更新します。
カスタム関数との違い: カスタム関数は、スプレッドシートのセルに直接入力して使用する関数で、手動で呼び出す必要があります。一方、onEdit トリガーは自動的に実行されるため、ユーザーが何かを入力するたびに自動的に反応します。
まとめ
このスクリプトは、特定のセルが編集されたときに自動的にタイムスタンプを更新するためのものであり、カスタム関数ではなく、イベントに基づいて動作するものです。これにより、ユーザーは手動で関数を呼び出す必要がなく、スプレッドシートの操作がよりスムーズになります。