应用程式指令码检查一栏是否包含特定字词的写入日期

时间:2019-05-29 11:00:51

标签: javascript google-apps-script spreadsheet

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:

1 个答案:

答案 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';