如何打印更改前的值?(google 脚本)
how to print the value before it was changed?(google script)
如果在使用 Google 脚本时值发生变化,我想在它旁边的单元格中记录变化。触发器被测试,但只保存更改后的值,而不是更改前的值。我需要修复哪里才能获得更改前的值?
function onEdit1()
{
var sheet = SpreadsheetApp.getActiveSheet();
if (sheet.getName() == "sheet1") //"order data" is the name of the sheet where you want to run this script.
{
var actRng = sheet.getActiveRange();
var editColumn = actRng.getColumn();
var rowIndex = actRng.getRowIndex();
var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues();
var aCol = headers[0].indexOf("A") + 1;
var usdCol = headers[0].indexOf("USD") + 1;
var rmbCol = headers[0].indexOf("RMB") + 1;
var changedData = sheet.getRange(rowIndex, usdCol).getValues();
var logData = sheet.getRange(rowIndex, aCol).getValues();
if (aCol > 0 && rowIndex > 1 && editColumn == usdCol)
{
if (!sheet.getRange(rowIndex, aCol).isBlank())
{
sheet.getRange(rowIndex, aCol).setValue(Utilities.formatDate(new Date(), "UTC+8", "yyyy-MM-dd") + "에 " + changedData + "(으)로 변경" + "/" + logData);
}else{
logData = Utilities.formatDate(new Date(), "UTC+8", "yyyy-MM-dd") + "에 " + changedData + "(으)로 변경됨" + " / ";
// sheet.getRange(rowIndex, aCol).setValue(Utilities.formatDate(new Date(), "UTC+8", "yyyy-MM-dd") + "에 " + changedData + "(으)로 변경됨" + " / ");
}
}
}
}
要在单元格更改之前获取单元格的值,您可以使用 on edit 触发器。
如果编辑单个单元格,事件对象可能包含 value
和 oldValue
属性。
以下是一个非常简单的示例,它将旧值记录到已编辑单元格右侧的单元格中。
function onEdite(e){
if(e.oldValue) e.range.offset(0,1).setValue(e.oldValue);
}
- 如果单元格被清除,
value
属性 将是 undefined
。
- 如果单元格为空,
oldValue
属性 将是 undefined
- 如果编辑了多个单元格(
range
属性 包含多个单元格),这两个属性都将是 undefined
如果在使用 Google 脚本时值发生变化,我想在它旁边的单元格中记录变化。触发器被测试,但只保存更改后的值,而不是更改前的值。我需要修复哪里才能获得更改前的值?
function onEdit1()
{
var sheet = SpreadsheetApp.getActiveSheet();
if (sheet.getName() == "sheet1") //"order data" is the name of the sheet where you want to run this script.
{
var actRng = sheet.getActiveRange();
var editColumn = actRng.getColumn();
var rowIndex = actRng.getRowIndex();
var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues();
var aCol = headers[0].indexOf("A") + 1;
var usdCol = headers[0].indexOf("USD") + 1;
var rmbCol = headers[0].indexOf("RMB") + 1;
var changedData = sheet.getRange(rowIndex, usdCol).getValues();
var logData = sheet.getRange(rowIndex, aCol).getValues();
if (aCol > 0 && rowIndex > 1 && editColumn == usdCol)
{
if (!sheet.getRange(rowIndex, aCol).isBlank())
{
sheet.getRange(rowIndex, aCol).setValue(Utilities.formatDate(new Date(), "UTC+8", "yyyy-MM-dd") + "에 " + changedData + "(으)로 변경" + "/" + logData);
}else{
logData = Utilities.formatDate(new Date(), "UTC+8", "yyyy-MM-dd") + "에 " + changedData + "(으)로 변경됨" + " / ";
// sheet.getRange(rowIndex, aCol).setValue(Utilities.formatDate(new Date(), "UTC+8", "yyyy-MM-dd") + "에 " + changedData + "(으)로 변경됨" + " / ");
}
}
}
}
要在单元格更改之前获取单元格的值,您可以使用 on edit 触发器。
如果编辑单个单元格,事件对象可能包含 value
和 oldValue
属性。
以下是一个非常简单的示例,它将旧值记录到已编辑单元格右侧的单元格中。
function onEdite(e){
if(e.oldValue) e.range.offset(0,1).setValue(e.oldValue);
}
- 如果单元格被清除,
value
属性 将是undefined
。 - 如果单元格为空,
oldValue
属性 将是undefined
- 如果编辑了多个单元格(
range
属性 包含多个单元格),这两个属性都将是undefined