im在列中获取当前日期时间。但是我只需要在COLUMNTOCHECK(3)单元格具有文本“ assign”的情况下更改该列。
第3列中的一个单元格更改的时刻即第11列中的所有单元格更改为当前时间。仅应更改第11列中与上次更改的“ assign”位于同一行的单元格。
简而言之,我需要什么;如果第3列中的1个单元格获得值“ assign”,则当前日期时间应出现在同一行和第11列中。当同一调用变回其他内容时,不应触摸日期时间!我非常感谢您的帮助:) !!
我需要获取在特定单元格中似乎设置了错误的当前时间。错误出现的时刻是第3列中的单元格获得值“ assign”的时刻
var COLUMNTOCHECK = 3;
var DATETIMELOCATION = [0,11];
var SHEETNAME = 'Blad1'
function onEdit(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
if( sheet.getSheetName() == SHEETNAME ) {
var selectedCell = ss.getActiveCell();
if( selectedCell.getColumn() == COLUMNTOCHECK && ) {
var dateTimeCell =
selectedCell.offset(DATETIMELOCATION[0],DATETIMELOCATION[1]);
dateTimeCell.setValue(new Date());
}
}
}
// i tried other code but this one gives no result back;
function test(test1){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet()
var data = sheet.getDataRange().getValue();
var data_length = data.length;
for(var i=0; i<data_length; i++) {
if(data[i][0] == "assign") {
ss.getRange(i+1,11).setValue((new Date()));
}
}
}
我需要在一个特定的单元格中输入日期和时间,例如29-5-2019 11:33:26:
答案 0 :(得分:0)
这应该完全符合您的期望。
注意:您将无法手动运行此文件,它将在编辑工作表时自动运行。
function onEdit(e) {
var sh = e.source.getActiveSheet();
var col = e.range.getColumn();
var val = e.range.getValue();
//check if sheet is 'Blad1', column edited is 'C' & value is 'assign'
if (sh.getSheetName() === 'Blad1' && col === 3 && val === 'assign') {
var row = e.range.getRow();
var tz = e.source.getSpreadsheetTimeZone();
var date = Utilities.formatDate(new Date(), tz, 'dd-MM-yyyy hh:mm:ss a');
//set date in column 11 for same row
sh.getRange(row, 11).setValue(date);
}
}
此脚本的时间基于电子表格的当前时区设置,如您在var tz
中所见。可以根据您的需求轻松地进行更改,如果需要根据需要进行更改,下面是一些示例。
//use spreadsheet timezone setting
var tz = e.source.getSpreadsheetTimeZone();
//use script timezone setting
var tz = Session.getScriptTimeZone();
//enter your own time zone
var tz = 'GMT+0';