@easydroop

Как форматировать результаты скрипта для вывода?

У меня в Гугл таблице с помощью сторонних сервисов собирается информация о затратах на рекламную кампанию и о прибыли и считается доля рекламных расходов. Обновляется все это дело раз в час. Чтобы каждый раз не заходить в таблицу, я решил сделать бота, который по запросу эти данные мне в Телеграме бы отдавал. Я нашел в интернете статью, как данные из Гугл таблиц тащат в Телеграм, и подставил свои значения:

function doPost(e) {
  // получаем сигнал от бота
  var update = JSON.parse(e.postData.contents);
  
  // проверяем тип полученного, нам нужен только тип "сообщение"
  if (update.hasOwnProperty('message')) {
    var msg = update.message;
    var chatId = msg.chat.id;
    
    // проверяем, является ли сообщение командой к боту
    if (msg.hasOwnProperty('entities') && msg.entities[0].type == 'bot_command') {
      
      // проверяем на название команды - /stat
      if (msg.text == '/stat') {
        
        // если все проверки пройдены - запускаем код, который ниже, 
        // открываем оглавление нашего канала 
        var sheet =  SpreadsheetApp.openById('1auEoZHq5--BRF6MKrghzexbsQzbD0R5WnUR3B9Ukj9A').getSheets()[1]
        
        // достает последний пост
        var drr = sheet.getRange(sheet.getLastRow(), 1, 1,  3).getValues()[0]
        var message = '<strong>Ежедневный отчет</strong>\n' + 'Потрачено с НДС: ' + drr[0] + '₽' + '\n' + 'Доход: ' + drr[1]  + '₽' + '\n' +
          'ДРР: ' + drr[2]*100+'%'        
        //формируем с ним сообщение
        var payload = {
          'method': 'sendMessage',
          'chat_id': String(chatId),
          'text': message,
          'parse_mode': 'HTML'
        }     
        var data = {
          "method": "post",
          "payload": payload
        }
        
        // и отправляем его боту (замените API на свой)
        var API_TOKEN = '000000:ABCDZ'
        UrlFetchApp.fetch('https://api.telegram.org/bot' + API_TOKEN + '/', data);
      }
    }
  }
}


Все получилось, кроме того что данные не округляются:

Ежедневный отчет
Потрачено с НДС: 54335.42399999999
Доход: 577447
ДРР: 9.409594993133567%


Какой параметр нужно добавить к переменным, чтобы они округлялись? Перерыл документацию, но видимо из-за того что нет опыта в программировании, то ничего не нашёл.
  • Вопрос задан
  • 278 просмотров
Решения вопроса 1
oshliaer
@oshliaer Куратор тега Google Apps Script
Google Products Expert
Рекомендую использовать метод getDisplayValues()

var drr = sheet.getRange(sheet.getLastRow(), 1, 1, 3).getDisplayValues()[0];


т.о. вам не придется беспокоится о типах данных в коде, и будет достаточно привести тип данных в ячейке. Если в ячейке будет видно 0.00%, то вернет именно 0.00%, если 1-02-20, то 1-02-20.

Это наименьшее и наиболее надежное решение в данном случае.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы