Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何根据应用程序脚本中的范围值设置条件_Javascript_Google Apps Script_Google Sheets - Fatal编程技术网

Javascript 如何根据应用程序脚本中的范围值设置条件

Javascript 如何根据应用程序脚本中的范围值设置条件,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我需要更新代码,以便检测C列中的单元格何时“准备处理”或“完成”,然后根据插入的短语插入时间戳。 目前,时间戳自动插入A列和B列,但无论在C列中做了什么更改 我的代码: function onEdit(e) { addTimeStamp(e); } function addTimeStamp(e) { // variables var startRow = 1; var ws = "2021"; var targetColumn = 3;

我需要更新代码,以便检测C列中的单元格何时“准备处理”或“完成”,然后根据插入的短语插入时间戳。 目前,时间戳自动插入A列和B列,但无论在C列中做了什么更改

我的代码:

function onEdit(e) {
  addTimeStamp(e);
  }

function addTimeStamp(e) {

  // variables
  var startRow = 1;
  var ws = "2021";
  var targetColumn = 3;  

  // get modified row and columns  
  var row = e.range.getRow();
  var col = e.range.getColumn();

  if (col === targetColumn && row > startRow && e.source.getActiveSheet().getName() === ws) {
  e.source.getActiveSheet().getRange(row, 2).setValue(new Date());
  }

  if (col === targetColumn && row > startRow && e.source.getActiveSheet().getName() === ws) {
  e.source.getActiveSheet().getRange(row, 1).setValue(new Date());
  }
}

如果C列中的值为“准备处理”或“已完成”,我不确定您是否要设置相同的值,或者您希望每个案例的值不同

但是下面的脚本为每种情况都包含单独的if语句,因此您可以为
“准备好处理”
“完成”
添加不同的值,并且只对它们添加

function addTimeStamp(e){
      const ar = e.range;
      const row = ar.getRow();
      const col = ar.getColumn();
      const as = ar.getSheet();
      if (as.getName()=="2021" && col == 3 && row > 1){
        if(ar.getValue()=="Ready to process" && as.getRange(row,1).getValue()==''){
           as.getRange(row,1).setValue("valueA"); 
        }
        else if (ar.getValue()=="Completed" && as.getRange(row,1).getValue()==''){
           as.getRange(row,1).setValue("valueB");
        }
      }
}

谢谢我看到它起作用了!!不管怎样,如果我想阻止第一个新日期(),并且在某个用户再次更改状态时不更新,我该如何管理它?@NicolasMEDVEDY我更新了我的答案。只有当对应的单元格为空时,才能输入新值,否则保持原样。因此,旧的日期将留在那里。考虑一下接受/投票的答案,如果它通过点击答案左边的投票/滴答按钮来解决你的问题。