Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.03.2018, 18:02
Новичок на форуме
Отправить личное сообщение для ronin Посмотреть профиль Найти все сообщения от ronin
 
Регистрация: 17.03.2018
Сообщений: 8

Создание функции для гугл таблиц на JS
Нужно создать особую пользовательскую функцию для гугл таблиц.
У гугла есть Google Script, утилита для написания кода, например функций для таблиц, она работает на JS.
Вроде функция была дописана, но в самих таблицах она не работает. Не выдаёт даже ошибки, просто пустая клеточка.
Может кто знает как пофиксить, буду очень благодарен.
Ниже прилагаю скриншоты и сам код.



function EmsOnline (a, b, c, d)
{
var f;
f = (((c*60)+d)-((a*60)+b));

if (f % 60 >= 0.5) {
EmsOnline == (f+(1-(f%60)))
}
if (f % 60 < 0.5) {
EmsOnline == (f-(f%60))
}
}


P.S. Для лучшего понимания вопроса объясню. Функция рассчитывает время, которое человек находиться на сервере, таблица используется как график дежурств, a:b - ЧасНачала:МинутыНачала дежурства, c:d - ЧасОкончания:МинутыОконча ия дежурства, функция должна переводить часы в минуты, рассчитывать сколько минут человек находился на сервере, переводить эти минуты в часы, и округлять то кол-во времени, в часах, по правилам округления математики. Округлённое кол-во часов должно выводиться в клеточку.

Последний раз редактировалось ronin, 17.03.2018 в 19:59.
Ответить с цитированием
  #2 (permalink)  
Старый 17.03.2018, 18:17
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

EmsOnline == (f+(1-(f%60)))
тут точно сравнение???
как бы функция итак ничего не возвращает.
Ответить с цитированием
  #3 (permalink)  
Старый 17.03.2018, 18:21
Новичок на форуме
Отправить личное сообщение для ronin Посмотреть профиль Найти все сообщения от ronin
 
Регистрация: 17.03.2018
Сообщений: 8

Сообщение от j0hnik Посмотреть сообщение
EmsOnline == (f+(1-(f%60)))
тут точно сравнение???
как бы функция итак ничего не возвращает.
Я просто не разбираюсь в JS никак, в инете увидел что == это равно.
Но поставить == или даже =, всё равно не работает ;(

+не разбираюсь в проф.сленге, в названиях операторов и во всём таком вообще нисколько

Последний раз редактировалось ronin, 17.03.2018 в 18:24.
Ответить с цитированием
  #4 (permalink)  
Старый 17.03.2018, 18:33
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

думаю эта задача под силам excel без всякого js. какой должен быть результат?
Ответить с цитированием
  #5 (permalink)  
Старый 17.03.2018, 18:38
Новичок на форуме
Отправить личное сообщение для ronin Посмотреть профиль Найти все сообщения от ronin
 
Регистрация: 17.03.2018
Сообщений: 8

Сообщение от j0hnik Посмотреть сообщение
думаю эта задача под силам excel без всякого js. какой должен быть результат?
Exel то она под силу, но вот чтобы засунуть функцию в гугл таблицы нужно через google script это делать, а значит через js.
Конечный результат - сокращение формулы
=Round((((b*60)+c)-((a*60)+b))/60)
до одной функции, для удобства.
О том что делает эта формула писал в теме.
Ответить с цитированием
  #6 (permalink)  
Старый 17.03.2018, 18:54
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

function EmsOnline (a, b, c, d) {
var f = (c*60+d)-(a*60+b); 
return f % 60 >= 0.5? f+(1-(f%60)):f-(f%60);
}

alert(EmsOnline(14, 30, 16, 40));


вот функция, как интегрируются подсказать не смогу, не пользовался сервисом.
Ответить с цитированием
  #7 (permalink)  
Старый 17.03.2018, 18:58
Новичок на форуме
Отправить личное сообщение для ronin Посмотреть профиль Найти все сообщения от ronin
 
Регистрация: 17.03.2018
Сообщений: 8

Сообщение от j0hnik Посмотреть сообщение
function EmsOnline (a, b, c, d) {
var f = (c*60+d)-(a*60+b); 
return f % 60 >= 0.5? f+(1-(f%60)):f-(f%60);
}

alert(EmsOnline(14, 30, 16, 40));


вот функция, как интегрируются подсказать не смогу, не пользовался сервисом.
Пишет
ReferenceError: Объект "alert" не определен. (строка 6, файл Код)
Ответить с цитированием
  #8 (permalink)  
Старый 17.03.2018, 19:03
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

function EmsOnline (a, b, c, d) {
var f = (c*60+d)-(a*60+b); 
return f % 60 >= 0.5? f+(1-(f%60)):f-(f%60);
}

=EmsOnline(a16, b16, c16, d16);


alert был для демонстрации
Ответить с цитированием
  #9 (permalink)  
Старый 17.03.2018, 19:08
Новичок на форуме
Отправить личное сообщение для ronin Посмотреть профиль Найти все сообщения от ronin
 
Регистрация: 17.03.2018
Сообщений: 8


Ответить с цитированием
  #10 (permalink)  
Старый 17.03.2018, 19:11
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

EmsOnline(a16, b16, c16, d16);

без = попробуйте
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Воздействие функции только для первого элемента набора Иззет jQuery 2 13.10.2015 13:03
Создание JS конструктора sheckler Работа 2 25.05.2015 21:24
Как заставить JS обрабатывать функции для всех блоков с заданным классом? GTX14 Общие вопросы Javascript 1 04.04.2015 16:12
Отмена функции связанной с JS API google.maps mr__brainwash Events/DOM/Window 3 20.10.2014 13:50
JS на ARM. Нет функции SergNF Общие вопросы Javascript 0 26.02.2013 10:47