#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. Ваше решение определенно работает. Не является прямым ответом на мой первоначальный вопрос, но делает то, что я изначально намеревался сделать.