こんにちは。先週からはじめてのプログラミングを勉強中です。
手始めに研修管理シートを作成していますが、下記がうまくいきません。
【やりたいこと】
スプレッドシートの「受講予定者一覧」というシートに、研修を受ける必要のある人の名簿が記録されています。
このシートのF列に、研修の受講状況(受講済,未受講)を記録していきます。
このF列の値が「受講済」に更新された場合、
・更新されたセルの右隣のセル(G列)に、「受講済」へと更新した日時を、
・更新されたセルの2つ右のセル(H列)に、更新した人のメールアドレスを
それぞれ取得して記録したいです。
F列を更新する際に、一つ一つのセルに「受講済」と入力していけば、書いてみたコードはうまく動くのですが、「受講済」の値をどこかのセルからコピーしてきて、まとめて更新した場合、どちらの操作も動きません。
F列の更新をひとつひとつした場合だけでなく、コピペでまとめて更新した場合にも動作するようにはできないのでしょうか。
書いたコードはこちらです。
function onEdit(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var range = sheet.getActiveRange();
var row = e.range.getRow();
var column = e.range.getColumn();
var ssName = sheet.getSheetName();
var cellvalue = e.value;
var oldcellvalue = e.oldValue;
console.log('onEdit');
console.log('ssName:' + ssName);
console.log('row:' + row);
console.log('column:' + column);
console.log('cellvalue:' + cellvalue);
console.log('oldcellvalue:' + oldcellvalue);
if(ssName != '受講予定者一覧') return;
// 「受講予定者一覧」シートで処理する内容
if (column == 6 && cellvalue == '受講済' && oldcellvalue == '未受講') {
console.log('before xxx');
var str = Utilities.formatDate(new Date(), "JST", "yyyy-MM-dd HH:mm:ss");
var user = Session.getActiveUser().getUserLoginId();
console.log('str:' + str); console.log('user:' + user); sheet.getRange(row,7).setValue(str); sheet.getRange(row,8).setValue(user);
}
}
回答1件
あなたの回答
tips
プレビュー