
日付入力GASをChatGPTに書いてもらった~毎回3秒の節約~
どうか読み始める前に「スキ」をお願いします。
まいどながら、ChatGPTにお世話になっています。
最近、AI関連のセミナーやイベントに積極的に申し込んでいるのですが、何に申し込んだのか、どこから申し込んだのか、情報がどこに配信されるのかをいちいち覚えておくのが大変です。しまいには、「あれ?そもそも何のために申し込んだんだっけ?」と思ってしまうこともあります。これって、もう重症ですよね。
毎日のように生成AIの進化がめまぐるしく、情報の流れについていくのが本当に大変です。
ちなみに私はNotionではなく、OneNote派です。なぜOneNoteを選んでいるのか、気になりますか?
そこで今回は、申し込み情報を記録することにしました。
とはいえ、いちいち日時を手動で記録するのは手間なので、時短の工夫として、Excelで「B列に入力があったらA列に自動的に日時が記録される」仕組みを作りました。これで少しでも管理が楽になります!
毎回3秒の節約
プロンプト
スプレッドシート B列に文字を入れたらA列に自動的に日時時間を表示するようにしたいです
ChatGPTの答え
Googleスプレッドシートで、B列に文字を入力した際にA列に自動的に日付と時間を表示するには、Google Apps Script(GAS)を使用します。以下の手順で設定できます。
手順
スプレッドシートを開く
スクリプトを適用したいスプレッドシートを開きます。Apps Script エディタを開く
メニューから「拡張機能」 → 「Apps Script」をクリックします。スクリプトを記述する
以下のコードをコピーしてスクリプトエディタに貼り付けます。
function onEdit(e) {
var sheet = e.source.getActiveSheet();
var range = e.range;
// B列が編集された場合にA列に日付と時間を記入
if (range.getColumn() == 2 && range.getRow() > 1) { // B列かつ1行目以外
var timestamp = new Date(); // 現在の日時
var targetCell = sheet.getRange(range.getRow(), 1); // A列の同じ行
targetCell.setValue(timestamp);
}
}
保存
スクリプトエディタの左上にある保存アイコンをクリックし、プロジェクトに名前を付けて保存します(例: TimestampScript)。トリガーの設定は不要
このスクリプトはonEditというイベントハンドラーを使用しているため、特別なトリガー設定は不要です。動作を確認
スプレッドシートに戻り、B列に文字を入力すると、同じ行のA列に日付と時間が自動的に入力されるはずです。
注意点
権限の承認: 初めてスクリプトを実行するときに、権限を求められる場合があります。その際は指示に従って承認してください。
既存データの上書き: A列に既存のデータがある場合、このスクリプトはそれを上書きします。
必要に応じて修正もできますので、お試しください!
追加プロンプト
そういえばシートを指定しないとほかのシートも同じように日時が自動入力されてしまいますね。
ということで
シート名を「申し込み履歴」に限定したい
ChatGPTの答え
スクリプトを特定のシート(この場合は「申し込み履歴」)に限定するように修正することができます。以下にそのコードを示します。
修正版スクリプト
function onEdit(e) {
var sheet = e.source.getActiveSheet();
var range = e.range;
// シート名を「申し込み履歴」に限定
if (sheet.getName() === "申し込み履歴") {
// B列が編集された場合にA列に日付と時間を記入
if (range.getColumn() == 2 && range.getRow() > 1) { // B列かつ1行目以外
var timestamp = new Date(); // 現在の日時
var targetCell = sheet.getRange(range.getRow(), 1); // A列の同じ行
targetCell.setValue(timestamp);
}
}
}
主な変更点
シート名の条件追加
if (sheet.getName() === "申し込み履歴") {
この条件によって、スクリプトは「申し込み履歴」という名前のシートでのみ動作します。
他のシートへの影響を防止 他のシートで編集操作があってもスクリプトが動作しなくなります。
設定手順
スプレッドシートで「申し込み履歴」という名前のシートを作成してください。
スクリプトをスクリプトエディタにコピーして保存します。
スプレッドシートに戻り、「申し込み履歴」シートのB列に文字を入力して動作を確認します。
これで、「申し込み履歴」シートに限定して動作するスクリプトが完成です!
完璧です。
実際に試してみるのがおすすめです。世の中には「こんなプロンプトがありますよ」と配布されているものもありますが、それをいちいち探すより、自分で会話を進めながら自然に作り上げていく方が効率的で良いと感じますね。