для цикла, не зацикливающего весь массив

#google-apps-script

#google-apps-script

Вопрос:

Может кто-нибудь, пожалуйста, объяснить, почему приведенный ниже цикл for не зацикливается на всем массиве? Я уже запускал этот точный скрипт раньше, и он работает нормально, я просто не могу понять, чего мне здесь не хватает.

Исходные данные выглядят следующим образом. В наборе примеров, с которым я работаю, есть 15 строк данных, исключая заголовки

Начать Продолжительность
14/08/2020 12:21:33 00:00:06
14/08/2020 12:21:56
14/08/2020 15:39:12 00:10:49
14/08/2020 16:11:10
14/08/2020 16:11:33 00:16:03

Сценарий, который у меня есть

 function time() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('Sheet1');
  var range = sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn());
  var values = range.getDisplayValues();

  //console.log(values)
  for (var i = 0; i < values.length; i  ) {
    var st = values[i][1];
    var s = st.split(':');
    var res = ( s[0]) * 3600   ( s[1]) * 60   ( s[2]);
  }

console.log(res)
}
 

Если я выхожу из res системы, я получаю одно значение вместо всех 15

 Execution log
12:06:25 AM Notice  Execution started
12:06:28 AM Info    475
12:06:27 AM Notice  Execution completed
 

Комментарии:

1. Поскольку часть журнала находится вне цикла

2. Конечно, да. Я знал, что мне здесь чего-то не хватает. Спасибо @ TheMaster. Это было бы причиной да.

Ответ №1:

Вы имели в виду что-то подобное?

 function test() {
  let st='00:10:49';
  let s=st.split(':');
  var res =   s[0] * 3600     s[1] * 60     s[2];
  Logger.log(res);//4310
}
 

Попробуйте это так:

 function time() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('Sheet1');
  var range = sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn());
  var values = range.getDisplayValues();
  let o = [];
  for (var i = 0; i < values.length; i  ) {
    var st = values[i][1];
    var s = st.split(':');
    var res =   s[0] * 3600     s[1] * 60     s[2];
    o.push(res);
  }
  
  SpreadsheetApp.getUi().showModelessDialog(HtmlService.createHtmlOutput(o.filter(v=>!isNaN(v)).join('<br />')), 'Numbers only Please');
}
 

введите описание изображения здесь

Комментарии:

1. Спасибо @Cooper. Ваше решение определенно работает. Не является прямым ответом на мой первоначальный вопрос, но делает то, что я изначально намеревался сделать.