Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.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 检查/引用空数组值(Google应用程序脚本)_Javascript_Arrays_Google Apps Script_Google Sheets - Fatal编程技术网

Javascript 检查/引用空数组值(Google应用程序脚本)

Javascript 检查/引用空数组值(Google应用程序脚本),javascript,arrays,google-apps-script,google-sheets,Javascript,Arrays,Google Apps Script,Google Sheets,我有一个谷歌电子表格,做一些简单的单元格引用和数学每月出差的工作。我有一个函数,可以读取a列中的值(由工作表上的WEEKDAY()公式获得)。如果是星期六(值5)或星期日(值6),它会将整行变黑。我需要它以某种方式格式化工作日(值0-4)并且,只有当该行中的日期单元格为空时,才能将该行重新格式化为标准空白。如何搜索数组(您可以看到我是如何创建的)并在该数组中找到空值?我将复制粘贴数组值的示例日志(注意周期性[]) 以下是在您的情况下检索空数组的方法: var x = [[1.0], [2.0],

我有一个谷歌电子表格,做一些简单的单元格引用和数学每月出差的工作。我有一个函数,可以读取a列中的值(由工作表上的WEEKDAY()公式获得)。如果是星期六(值5)或星期日(值6),它会将整行变黑。我需要它以某种方式格式化工作日(值0-4)并且,只有当该行中的日期单元格为空时,才能将该行重新格式化为标准空白。如何搜索数组(您可以看到我是如何创建的)并在该数组中找到空值?我将复制粘贴数组值的示例日志(注意周期性[])


以下是在您的情况下检索空数组的方法:

var x = [[1.0], [2.0], [], [4.0], [5.0], [6.0], [0.0], [1.0], [], [3.0], [4.0], [5.0], [], [], [1.0], [], [3.0], [4.0], [5.0], [6.0], [0.0], [1.0], [2.0], [3.0], [], [5.0], [6.0], [0.0], [1.0], [2.0], []];

function myFunction(x) {
 for (var i = 0; i < x.length; i ++) {

  if(x[i].length == 0){
    // array is empty 
    Logger.log('empty'); 
   } else {
    //array not empty
    Logger.log('not empty');
  }

 }
}
var x=[1.0]、[2.0]、[4.0]、[5.0]、[6.0]、[0.0]、[1.0]、[3.0]、[4.0]、[5.0]、[1.0]、[3.0]、[4.0]、[5.0]、[6.0]、[0.0]、[1.0]、[2.0]、[3.0]、[5.0]、[6.0]、[0.0]、[1.0]、[2.0]、[2.0];
函数myFunction(x){
对于(变量i=0;i
我还注意到您的语句中缺少“;”。您的脚本按原样运行吗


干杯

这是在您的情况下检索空数组的方法:

var x = [[1.0], [2.0], [], [4.0], [5.0], [6.0], [0.0], [1.0], [], [3.0], [4.0], [5.0], [], [], [1.0], [], [3.0], [4.0], [5.0], [6.0], [0.0], [1.0], [2.0], [3.0], [], [5.0], [6.0], [0.0], [1.0], [2.0], []];

function myFunction(x) {
 for (var i = 0; i < x.length; i ++) {

  if(x[i].length == 0){
    // array is empty 
    Logger.log('empty'); 
   } else {
    //array not empty
    Logger.log('not empty');
  }

 }
}
var x=[1.0]、[2.0]、[4.0]、[5.0]、[6.0]、[0.0]、[1.0]、[3.0]、[4.0]、[5.0]、[1.0]、[3.0]、[4.0]、[5.0]、[6.0]、[0.0]、[1.0]、[2.0]、[3.0]、[5.0]、[6.0]、[0.0]、[1.0]、[2.0]、[2.0];
函数myFunction(x){
对于(变量i=0;i
我还注意到您的语句中缺少“;”。您的脚本按原样运行吗


Cheers

可以为您这样做,它使处理2D数组的过程更简单。为此,您需要IndexOf函数,并使用-1搜索所有列。

可以为您这样做,它使处理2D数组的过程更简单。为此,您需要IndexOf函数,然后使用-1搜索所有列。

我解决了查找数组中哪个点为空的问题,而是设置了一个变量来引用循环中的每个单元格,并检查其本身是否为空。如果它看到为空,则执行代码块。下面的示例

function onEdit() {
  var ss = SpreadsheetApp.getActiveSpreadsheet()
  var sheet = ss.getActiveSheet()
  var range = sheet.getRange("A3:A33")
  var value = range.getValues()
  var sheetCheckRange = sheet.getRange(2,2)
  var sheetCheck = sheetCheckRange.getValue()
  if (sheetCheck == "Date") {
    for (i = 0; i < value.length; i++) {
      var row = sheet.getRange((i + 3), 1, 1, 11)
      var sessionCell = sheet.getRange((i + 3), 3)
      var dateCell = sheet.getRange((i+3), 2)
      var section1 = sheet.getRange((i+3), 2, 1, 5)
      var section2 = sheet.getRange((i+3), 8, 1, 3)
      if (value[i] == 5 || value[i] == 6) {
        row.setBackground("Black")
        row.setBorder(true, null, true, null, null, null)
        //top, left, bottom, right, vertical, horizontal
        sessionCell.setValue("W")
      } if (value[i] == 0 || value[i] == 1 || value[i] == 2 || value[i] == 3 || value[i] == 4) {
        section1.setBackground("white")
        section2.setBackground("white")
        section1.setBorder(false, null, false, null, null, false)
        section2.setBorder(false, null, false, null, null, false)
      } if (dateCell.isBlank()) {
        section1.setBackground("white")
        section2.setBackground("white")
        section1.setBorder(false, null, false, null, null, false)
        section2.setBorder(false, null, false, null, null, false)
        sessionCell.setValue("")
      }
    }
  }
}
函数onEdit(){
var ss=SpreadsheetApp.getActiveSpreadsheet()
var sheet=ss.getActiveSheet()
var范围=sheet.getRange(“A3:A33”)
var value=range.getValues()
var sheetCheckRange=sheet.getRange(2,2)
var sheetCheck=sheetCheckRange.getValue()
如果(sheetCheck==“日期”){
对于(i=0;i
我还通过将函数重命名为来解决需要单独触发器的问题 函数onEdit()
这也使得复制电子表格以便在公司内共享变得更加容易,无需每个用户授权和设置触发器。

我解决了查找数组中哪个点为空的问题,而是设置了一个变量来引用循环中的每个单元格,并检查其本身是否为空。如果它看到为空,则执行代码块。示例如下

function onEdit() {
  var ss = SpreadsheetApp.getActiveSpreadsheet()
  var sheet = ss.getActiveSheet()
  var range = sheet.getRange("A3:A33")
  var value = range.getValues()
  var sheetCheckRange = sheet.getRange(2,2)
  var sheetCheck = sheetCheckRange.getValue()
  if (sheetCheck == "Date") {
    for (i = 0; i < value.length; i++) {
      var row = sheet.getRange((i + 3), 1, 1, 11)
      var sessionCell = sheet.getRange((i + 3), 3)
      var dateCell = sheet.getRange((i+3), 2)
      var section1 = sheet.getRange((i+3), 2, 1, 5)
      var section2 = sheet.getRange((i+3), 8, 1, 3)
      if (value[i] == 5 || value[i] == 6) {
        row.setBackground("Black")
        row.setBorder(true, null, true, null, null, null)
        //top, left, bottom, right, vertical, horizontal
        sessionCell.setValue("W")
      } if (value[i] == 0 || value[i] == 1 || value[i] == 2 || value[i] == 3 || value[i] == 4) {
        section1.setBackground("white")
        section2.setBackground("white")
        section1.setBorder(false, null, false, null, null, false)
        section2.setBorder(false, null, false, null, null, false)
      } if (dateCell.isBlank()) {
        section1.setBackground("white")
        section2.setBackground("white")
        section1.setBorder(false, null, false, null, null, false)
        section2.setBorder(false, null, false, null, null, false)
        sessionCell.setValue("")
      }
    }
  }
}
函数onEdit(){
var ss=SpreadsheetApp.getActiveSpreadsheet()
var sheet=ss.getActiveSheet()
var范围=sheet.getRange(“A3:A33”)
var value=range.getValues()
var sheetCheckRange=sheet.getRange(2,2)
var sheetCheck=sheetCheckRange.getValue()
如果(sheetCheck==“日期”){
对于(i=0;i
我也在aro工作
var x = [[1.0], [2.0], [], [4.0], [5.0], [6.0], [0.0], [1.0], [], [3.0], [4.0], [5.0], [], [], [1.0], [], [3.0], [4.0], [5.0], [6.0], [0.0], [1.0], [2.0], [3.0], [], [5.0], [6.0], [0.0], [1.0], [2.0], []];

function myFunction(x) {
 for (var i = 0; i < x.length; i ++) {

  if(x[i] == null){
    // array is empty 
    Logger.log('empty'); 
   } else {
    //array not empty
    Logger.log('not empty');
  }

 }
}