Как определить новую строку в определенном столбце? - PullRequest
0 голосов
/ 04 июля 2019

У меня в настоящее время есть некоторые проблемы с моим скриптом Google App.

На данный момент мы имеем следующее: когда пользователи вводят два значения (время) в столбец, продолжительность между столбцами будет автоматически рассчитана.в другом столбце, который мы делали с помощью функций в самой электронной таблице.

Когда мы передаем входные значения, мы используем функцию appendRow, и поскольку в столбце все будет запутано, мы устанавливаем значениеПредполагается, что в столбце длительности он будет пустым, чтобы он был заполнен пустым, а функция в самой электронной таблице его вычисляла.Однако проблема, с которой мы столкнулись, заключалась в том, что, используя эту функцию в электронной таблице, мы получаем значение 00:00 в качестве значения по умолчанию для каждой отдельной строки, не имеющей ввода времени, что означает, что функция appendRow обнаружит эти строки как заполненные.и добавит значения в самый конец таблицы, создав большой разрыв между строками со значениями и без значений.

Нам нужно решение для решения этой проблемы, и мы публикуем, чтобы получитьлюбые возможные решения по этому поводу.

Таким образом, мы решили использовать метод getRange (), а затем setValue.С getRange мы подумали об использовании чего-то вроде создания сетки 1x1, в которой строка Index будет такой же, как и строка Index, как новая ячейка в конкретном столбце, в который мы хотим импортировать значения, и для столбцов мы можем просто выбрать столбец Index.Но вскоре мы поняли, что это все равно не удастся, так как appendRow в строке Index по-прежнему будет возвращать индекс строки самой последней строки в электронной таблице.

Следующим методом, который мы попробовали, было обнаружение любого "0:00:00 "в столбце длительности, затем получите соответствующий индекс строки и используйте эту строку индекса для установки значения в этой конкретной строке, используя getRange (), что опять не удалось.

for (var i = 0; i < sheet.getMaxRows()+1; i++ ){
    if (sheet.getRange(i,4).getValue() === "0:00:00") {
        sheet.getRange(i,1).setValue(datas.enterDate);
        sheet.getRange(i,2).setValue(datas.enterStartTime);
        sheet.getRange(i,3).setValue(datas.enterEndTime);
        sheet.getRange(i,6).setValue(datas.enterFullName);
        sheet.getRange(i,7).setValue(datas.enterCategory);
        sheet.getRange(i,8).setValue(datas.enterActivity);
        sheet.getRange(i,9).setValue(datas.enterLink);
        break;
     }
} 

Ожидаемые результаты: как функцияспускаясь вниз по столбцу, он будет искать все ячейки, содержащие «0:00:00», и при этом он устанавливает значения с данными пользователей.

Вывод: ничего не отображается.

1 Ответ

0 голосов
/ 04 июля 2019

Попробуйте:

col - номер столбца.По умолчанию это столбец активной ячейки, а это объект листа, а по умолчанию - текущий активный лист, ss - объект электронной таблицы, а по умолчанию - текущая активная электронная таблица.

function newestRow(col,sh,ss){
  var ss=ss || SpreadsheetApp.getActive();
  var sh=sh || ss.getActiveSheet();
  var col=col || sh.getActiveCell().getColumn();
  var rg=sh.getRange(1,col,sh.getLastRow(),1);
  var vA=rg.getValues();
  while(vA[vA.length-1][0].length==0){
    vA.splice(vA.length-1,1);
  }
  return vA.length+1;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...