运行脚本时,Google表格中的功能会中断

问题描述 投票:0回答:1

我会先说我不知道​​自己在做什么。我正在通过互联网复制和粘贴代码以获得电子表格,而我的朋友们一起用于观看电影。

我遇到了一个问题,我正在使用当前日期更新一个单元格,如果该行的另一个单元格是空白的,则更新该行。这个问题是我然后在它旁边的单元格中使用一个函数来给出在单元格中标记下来的另一个日期的天数差异(就像普通的电子表格一样,这对我来说更容易)。但每次脚本运行时,函数都会中断并被替换为文本“#NUM!” (实际上有这个文本,因为函数从里面消失了)。

我尝试将其更改为= U2并且也会中断。这是不能做的事吗?伟大的全能谷歌神没有给我一个答案所以我在这里做了一个帐户,希望得救。

tl; dr Scrips看起来像是在破坏我的单元格引用,以查看它们编辑的单元格的任何工作表函数。怎么停?

在单元格V2中我有函数= DATEDIF(S2,U2,“D”)脚本低于(我不知道如何格式化)

function onEdit(event) {
var eventRange = event.range;
var sheetName = SpreadsheetApp.getActiveSheet().getSheetName();
if (sheetName == "Scores") {

  if (eventRange.getColumn() == 10) { //Check which is updated


    var columnXRange = SpreadsheetApp.getActive().getSheetByName("Scores").getRange(eventRange.getRow(), 21, eventRange.getNumRows(), 21);//where to write

    var values = columnXRange.getValues();

  for (var i = 0; i < values.length; i++) {
    if (!values[i][0]) {  // If cell isn't empty
     values[i][0] = new Date();
    }
  }
  columnXRange.setValues(values);
}
}  
}
google-apps-script google-sheets
1个回答
0
投票

好的,我看到了问题。你正在寻找比你想要的范围更大的范围

var columnXRange = SpreadsheetApp.getActive().getSheetByName("Scores").getRange(eventRange.getRow(), 21, eventRange.getNumRows(), 21);

您只需要一个单元格的值来检查它是否为空。尝试用以下功能替换您的功

function onEdit(event) {
  var eventRange = event.range;//makes shit happen?
  var sheetName = SpreadsheetApp.getActiveSheet().getSheetName();//checks current shit
  if (sheetName == "Scores") {//name of sheet want shit to happen

    if (eventRange.getColumn() == 10) { // 1 is column A, 2 is B ect

      // getRange(row, column, numRows, numColumns) sheet name to make not everywhere
      var columnXRange = SpreadsheetApp.getActive().getSheetByName("Scores").getRange(eventRange.getRow(), 21, 1, 1);//num is where will write 1 is a ect

      var values = columnXRange.getValues();//takes all shit from above to use as range

      if (!values[0][0]) {  // If cell isn't empty
         values[0][0] = new Date();//set date to the vaules in the range
      }

      columnXRange.setValues(values); //use the values set above and write them in 
    }
  }  
}

..那应该解决你的问题。当前脚本的问题在于脚本正在复制列v单元格的“值”并将其替换为文本值。这限制了您所需的单元格范围,消除了for()循环,并完全解决了问题。

© www.soinside.com 2019 - 2024. All rights reserved.