Преобразование макроса Excel в скрипт Google Apps

Я использовал макрос в листе Excel, чтобы создать пользовательскую функцию округления для специального калькулятора. Я хочу загрузить лист калькулятора на свой диск Google, чтобы я мог поделиться им в качестве ресурса. Однако язык Excel не переводится на язык сценариев Google Apps, и я не могу понять, как его настроить.

Я не эксперт по коду, поскольку я скопировал базовый код из Excel и немного подправил, и, вероятно, мне повезло заставить его работать. Но я попытался перевести код для работы в скрипте приложений Google, и он никогда не работал без ошибок.

Это код Excel, который дал мне успешную функцию.

Function pokeRound(pValue As Double) As Double

Dim LWhole As Long
Dim LFraction As Double

'Retrieve integer part of the number
LWhole = Int(pValue)

'Retrieve the fraction part of the number
LFraction = pValue - LWhole

If LFraction <= 0.5 Then
  pokeRound = LWhole
Else
  pokeRound = Round(pValue, 0)
End If

End Function

Это моя попытка перевода, которая не работает

function pokeRound() {
// Retrieve integer part of the number
var LWhole = (pValue);

// Retrieve the fraction part of the number
var LFraction = pValue - LWhole;
 If (LFraction <= 0.5)
   pokeRound = LWhole;
 Else
 (pokeRound = Round(pValue, 0));
};

Результатом этой функции является пользовательский метод округления. Обычное округление будет означать 88,5 раундов до 89. Вместо этого эта функция округляет 88,5 до 88 и округляет 88,51 до 89. Может ли кто-нибудь помочь мне перевести это для работы в Google Apps Script?


person A Loser    schedule 11.10.2019    source источник
comment
Добро пожаловать в StackOverFlow! Воспользуйтесь этой возможностью, чтобы пройти тур и узнать, как Как спросить и минимально воспроизводимый пример.   -  person Cooper    schedule 11.10.2019


Ответы (1)


Как насчет этого?

function pokeRound(v) {
  var v=v||1.63;
  var w=Math.floor(v);
  var f=v-w;
  if(f<=0.5) {
    return w;
  }else{
   return Math.round(v);
  }
}
person Cooper    schedule 11.10.2019
comment
Спасибо за вашу попытку. Это дало мне то, что мне было нужно, чтобы понять это. Кстати, вы можете удалить строку var v=v||1.63;. Я просто использовал его для тестирования. - person Cooper; 12.10.2019
comment
@ALoser Если это ответило на ваш вопрос, проголосуйте за него или отметьте его как решенный: Принятие ответов: как это работает? - person Pᴇʜ; 14.10.2019