質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.42%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Q&A

解決済

1回答

645閲覧

レ点いれた時の時間表示

hitct2460

総合スコア9

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

0グッド

1クリップ

投稿2023/05/24 00:25

スプレッドシートで申請書があって承認フローがあります。

各管理者がレ点をいれた時の時間を表示させたいのでA4にチェックボックス。
A2に時間表示させたいので

function checkdateset(a) {
//編集されたセルの場所を取得して変数「range」に格納
var range = a.range;

//取得した場所から行・列それぞれ変数に格納
var row = range.getRow(); // 行
var col = range.getColumn(); // 列

//編集された場所がチェックすると日付表示(A4)だったら実行
if(row === 4 && col === 1){
//アクティブシート(【Copori】GASで日付の自動入力・曜日連動サンプル)の「シート1」を取得
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

//現在の日付を取得して変数「todayTime」に格納 var todayTime = new Date(); //取得した日付をA2に入力 sheet.getRange('A2').setValue(todayTime); Logger.log('現在:'+todayTime);//ログ確認用

}
}

を書きました。
これは成功しました。

同じ事をG4にチェックボックス。
G2に時間表示させたい場合、続きはどのように書けばよろしいでしょうか?
ご教授願います。ちなみに超初心者で安直な考えなので

function checkdateset(a) {
//編集されたセルの場所を取得して変数「range」に格納
var range = a.range;

//取得した場所から行・列それぞれ変数に格納
var row = range.getRow(); // 行
var col = range.getColumn(); // 列

//編集された場所がチェックすると日付表示(A4)だったら実行
if(row === 4 && col === 1){
//アクティブシート(【Copori】GASで日付の自動入力・曜日連動サンプル)の「シート1」を取得
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

//現在の日付を取得して変数「todayTime」に格納 var todayTime = new Date(); //取得した日付をA2に入力 sheet.getRange('A2').setValue(todayTime); Logger.log('現在:'+todayTime);//ログ確認用

}
}

function checkdateset(b) {
//編集されたセルの場所を取得して変数「range」に格納
var range = b.range;

//取得した場所から行・列それぞれ変数に格納
var row = range.getRow(); // 行
var col = range.getColumn(); // 列

//編集された場所がチェックすると日付表示(G4)だったら実行
if(row === 4 && col === 7){
//アクティブシート(【Copori】GASで日付の自動入力・曜日連動サンプル)の「シート1」を取得
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

//現在の日付を取得して変数「todayTime」に格納 var todayTime = new Date(); //取得した日付をG2に入力 sheet.getRange('G2').setValue(todayTime); Logger.log('現在:'+todayTime);//ログ確認用

}
}

はダメでした、、、、、

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2023/05/24 00:28

このままではコードが読みづらいので、質問を編集し、</>(コードの挿入)ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
guest

回答1

0

ベストアンサー

同じ行のそれぞれの列が変更されたら他の行の同じ列に時刻を入力するスクリプトの参考例です。

JavaScript

1//4行目の特定の列の値が編集されたら同じ列の2行目に時刻を入力 2function checkColumnEdit(e) { 3 //編集されたセルの場所を取得して変数「range」に格納 4 var range = e.range; 5 //取得した場所から行・列それぞれ変数に格納 6 var row = range.getRow();//編集された行 7 var col = range.getColumn();//編集された列 8 //編集されたのが4行目で、かつ(列がA:1 または 列がG:7)のとき 9 if (row == 4 && (col == 1 || col == 7)) { 10 //編集されたセルがあるシートを取得 11 var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); 12 //現在の日付を取得して変数「todayTime」に格納 13 var todayTime = new Date(); 14 //チェックボックスのチェックが外されたときは時刻も削除するときは、以下の3行の冒頭の//を削除 15 // if (e.value == 'FALSE') { 16 // todayTime = ''; 17 // } 18 //取得した日付を2行目の同じ列に入力 19 sheet.getRange(2, col).setValue(todayTime); 20 Logger.log('現在:' + todayTime);//ログ確認用 21 } 22}

重複を避けるため関数名を変更してありますので、トリガーを再設定する必要があります。
なお、function名の行を
function onEdit(e) {
とするとトリガーを設定していなくても同じ動作になると思います。

投稿2023/05/24 01:01

編集2023/05/24 01:23
YellowGreen

総合スコア756

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YellowGreen

2023/05/24 01:24 編集

レ点以外でも何か値が入力されると2行目に日時が入力されますが、 元のスクリプトもそのようになっていたので e.valueの値は確認していません。 //コメントにしてある「チェックが外されたとき」には、確認するようにしています。 (追記)コメント部分がチェックボックスのチェックを外したときに対応していなかったので回答を一部修正しました。
hitct2460

2023/05/24 01:27

ありがとうございます。 //値が削除されたときは時刻も削除するときは、以下の3行の冒頭の//を削除を活用したくて //4行目の特定の列の値が編集されたら同じ列の2行目に時刻を入力 function onEdit(e) { //編集されたセルの場所を取得して変数「range」に格納 var range = e.range; //取得した場所から行・列それぞれ変数に格納 var row = range.getRow();//編集された行 var col = range.getColumn();//編集された列 //編集されたのが4行目で、かつ(列がA:1 または 列がG:7)のとき if (row == 4 && (col == 1 || col == 7 || col == 13 || col == 19 || col == 25)) { //編集されたセルがあるシートを取得 var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); //現在の日付を取得して変数「todayTime」に格納 var todayTime = new Date(); //値が削除されたときは時刻も削除するときは、以下の3行の冒頭の//を削除 if (!e.value) { var todayTime = ''; } //取得した日付を2行目の同じ列に入力 sheet.getRange(2, col).setValue(todayTime); Logger.log('現在:' + todayTime);//ログ確認用 } } の状況です。 チェックボックスを外すと時刻も削除されるという解釈であってますか? その場合、これだとチェックボックスを外しても時刻消えないのですが何故でしょうか?
YellowGreen

2023/05/24 01:31

ごめんなさい。 チェックボックスということを失念していました。 既に回答を修正してありますので、 if (!e.value) { を if (e.value == 'FALSE') { に修正してみてください。
hitct2460

2023/05/24 01:34

出来ました。立て続けにありがとうございました。
YellowGreen

2023/05/24 01:35

お役に立てて良かったです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.42%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問