[英]Google App Script - Google-Sheet rows are not sorting by timestamp as expected
[英]Google Sheet App Script Timestamp Condition(s)
这可能真的很简单,但我无法弄清楚。
我有一个时间戳脚本,是我从这个帅哥那里复制的
现在,我想要做的是仅在列A,B,C一个细胞被改变或充满创建一个时间戳。
/**
* Creates a Date Stamp if a column is edited.
*/
//CORE VARIABLES
// The column you want to check if something is entered.
var COLUMNTOCHECK = [2,3];
// Where you want the date time stamp offset from the input location. [row, column]
var DATETIMELOCATION = [0,1];
// Sheet you are working on
var SHEETNAME = 'Sheet1'
function onEdit(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
//checks that we're on the correct sheet.
if( sheet.getSheetName() == SHEETNAME ) {
var selectedCell = ss.getActiveCell();
//checks the column to ensure it is on the one we want to cause the date to appear.
if( selectedCell.getColumn() == COLUMNTOCHECK[0,1]) {
var dateTimeCell = selectedCell.offset(DATETIMELOCATION[0],DATETIMELOCATION[1]);
dateTimeCell.setValue(new Date());
}
}
}
我以为在if语句上添加一个带有var索引的子句将解决此问题,将COLUMNTOCHECK更改为[2,3,4,5]等。
if( selectedCell.getColumn() == COLUMNTOCHECK[0] || selectedCell.getColumn() == COLUMNTOCHECK[1] )
编辑。
抱歉,我对英语使用不当和要求不明确表示歉意。
我想要的是以下内容。
举个例子
John将销售数据输入到单元格A2,B2 =已创建时间戳。
John将数据输入到单元格A2 =未创建时间戳。
希望这有意义吗?
COLUMNTOCHECK
数组上使用indexOf()
来检查您正在查看的列之一是否已被编辑。 COLUMNTOCHECK
并检查已编辑行中每一列的值。 如果该行中的每一列都有一个值,则输入时间戳。 根据您的要求,您可以简化并使第3步运行更快。 如果仅检查A和B列,则只需获取一次该范围( editedSheet.getRange(editedRow, 1, 1, 2).getValues()
),然后遍历返回的值数组。
还要注意,我删除了偏移量并将时间戳记放置在C列中。同样,我不确定您的要求,但是对于在A列中进行的编辑,您的实现将在B列中覆盖值。
function onEdit(e) {
var COLUMN_TO_CHECK = [1,2]; // The columns to check if something is entered. (Columns A & B)
var DATE_TIME_COLUMN = 3; // Where you want the date time stamp (Column C)
var SHEET_NAME = "Sheet1"; // Sheet you are working on
var editedCell = e.range;
var editedSheet = e.range.getSheet();
if (editedSheet.getName() === SHEET_NAME) {
if (COLUMN_TO_CHECK.indexOf(editedCell.getColumn()) != -1) {
var allFilled = true;
var editedRow = editedCell.getRow();
for (var i in COLUMN_TO_CHECK) {
if (editedSheet.getRange(editedRow, COLUMN_TO_CHECK[i]).getValue() == "") {
allFilled = false;
}
}
if (allFilled) {
editedSheet.getRange(editedRow,DATE_TIME_COLUMN).setValue(new Date());
}
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.