Массив данных представляет собой список значений строк в один объект - PullRequest
0 голосов
/ 12 декабря 2018

Я создал кнопку, которая будет проверять ряд дат и искать сегодняшнюю дату.как только у меня будет эта дата, я планирую использовать ее местоположение, чтобы проверить список полученных элементов на этот день. enter image description here У меня возникли проблемы с моим массивом данных, который, кажется, компилирует все перечисленныезначения по всей строке в один объект?Когда я проверяю значения вручную (например, data [0] [2]), получается одна дата (12/2/18), как и должно быть, но когда я запрашиваю длину данных, он возвращает 1 и отладчикпоказывает мне, что data[1] это "ДЕКАБРЬ, 12/1/2018,12 / 2/2018 ....".Я предполагаю, что это где моя проблема, так как я использую свойство длины данных для инициализации моего цикла.По сути, мне нужно знать, как получить доступ к этим значениям столбца, а не только к строке.В идеале я хотел бы иметь возможность получить местоположение другой ячейки на основе этих значений счетчика.Так, например, что-то вроде: заданное значение r - это значение счетчика строк, а c - значение счетчика столбцов var today = dailySheet.getRange(r+1,c);

. Вот что у меня есть:

function dailyButton(){
var ss = SpreadsheetApp.openById("1RhhHuelCBVWWXQQQ9j3jiRCScsirofzwDleH-nxeLGw");
var dailySheet = ss.getSheetByName("Daily Papers");
var d = new Date();
var m = d.getMonth();
var mrange;
var strDate = Utilities.formatDate(d,"CST","MM/d/yyyy");
if (m == "10"){mrange = dailySheet.getRange("A95:AF95");} //November
else if(m == "11"){mrange = dailySheet.getRange("A104:AF104");} //December
var data = mrange.getValues();   
var dataLength = data.length;
Browser.msgBox("data02 ="+data[0][2]); //returns 12/2/18 correctly
Browser.msgBox("Data Length = "+dataLength); //returns 1
for( var c = 1; c < data.length; c++){ 
 if (data[0][c] == strDate) {
 Browser.msgBox(data[0][c]+" matches "+strDate);
  }
 }
}

Есть ликакое-то другое свойство, подобное "length", которое считает столбцы массива, а не только строки?

1 Ответ

0 голосов
/ 13 декабря 2018

Вот ваш код:

function dailyButton0(){
  var ss = SpreadsheetApp.openById("1RhhHuelCBVWWXQQQ9j3jiRCScsirofzwDleH-nxeLGw");
  var dailySheet = ss.getSheetByName("Daily Papers");
  var d = new Date();
  var m = d.getMonth();
  var mrange;
  var strDate = Utilities.formatDate(d,"CST","MM/d/yyyy");
  if (m == "10"){mrange = dailySheet.getRange("A95:AF95");} //November
  else if(m == "11"){mrange = dailySheet.getRange("A104:AF104");} //December
  var data = mrange.getValues();   
  var dataLength = data.length;
  Browser.msgBox("data02 ="+data[0][2]); //returns 12/2/18 correctly
  Browser.msgBox("Data Length = "+dataLength); //returns 1
  for( var c = 1; c < data.length; c++){ 
    if (data[0][c] == strDate) {
      Browser.msgBox(data[0][c]+" matches "+strDate);
    }
  }
}

data.length всегда равен 1, потому что данные - это массив, который выглядит как [[col1, col2, col3 .....]], то есть представляет собой одну строку.

У меня такое ощущение, что вы хотите что-то вроде этого:

function dailyButton(){
  var ss = SpreadsheetApp.openById("1RhhHuelCBVWWXQQQ9j3jiRCScsirofzwDleH-nxeLGw");
  var dailySheet = ss.getSheetByName("Daily Papers");
  var d = new Date();
  var m = d.getMonth();
  var mrange;
  var strDate = Utilities.formatDate(d,"CST","MM/d/yyyy");
  if (m == 10){mrange = dailySheet.getRange("A95:AF95");} //November
  else if(m == 11){mrange = dailySheet.getRange("A104:AF104");} //December
  var data = mrange.getValues();   
  var dataLength = data.length;
  Browser.msgBox("data02 ="+data[0][2]); //returns 12/2/18 correctly
  Browser.msgBox("Data Length = "+dataLength); //returns 1
  for(var c=0;c<data[0].length;c++){ 
    if (data[0][c]==strDate){
      Browser.msgBox(data[0][c]+" matches "+strDate);
    }
  }
}

Я запустил цикл с 0, так как getValues ​​() возвращает нулевой базовый массив.Так что data [0] [0] - это значение в столбце 1. Так что мой цикл равен for(var c=0;c<data[0].length;c++).Таким образом, data [0] .length - это длина первой и единственной строки.Так что это позволяет вам перебирать все столбцы в строке.

Надеюсь, это поможет.Если я ошибаюсь в своих предположениях, сообщите мне с комментарием, и я с удовольствием удалю свой ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...