.setNumberFormat не работает в скрипте Google Apps

У меня есть следующий код в моем скрипте Google Apps, который получает данные из моей электронной таблицы Google, а строка 15 (последняя строка) возвращает сообщение об ошибке TypeError: percent1.setNumberFormats is not a function (line 15, file "Code"). Что я должен изменить, чтобы исправить это?

Что я хочу сделать, так это отобразить dod1 в процентном формате, например 0.00%

function notifySlack(message) {

  var url = 'https://docs.google.com/spreadsheets/d/xxxxxxxxxxxxxxxxxxxxxx/edit#gid=xxxxxxxxx';
  var spreadSheet = SpreadsheetApp.openByUrl(url);
  var allSheets = spreadSheet.getSheets();
  var theSheet = allSheets[1];
  var lastRow = theSheet.getLastRow();
  var lastColumn = theSheet.getLastColumn();
  var sheetData = theSheet.getSheetValues(1, 1, lastRow, lastColumn);
  
  var ymd = Utilities.formatDate(sheetData[44][0], 'Asia/Tokyo', 'yyyy-MM-dd');
  
  var data1 = sheetData[44][1];
  var percent1 = sheetData[44][1] / sheetData[43][1];
  var dod1 = percent1.setNumberFormat('0.00%');
}
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
1 535
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Точки модификации:

  • В вашем сценарии, когда значения sheetData[44][1] и sheetData[43][1] являются числами, percent1 из var percent1 = sheetData[44][1] / sheetData[43][1]; является числом. Когда это строка, percent1 это NaN.
  • А setNumberFormat — это метод диапазона классов классов. Реф

В этой ситуации в вашем скрипте возникает ошибка. Это причина вашей проблемы. К сожалению, из вашего сценария я не смог понять детали вашей цели. Итак, в этом ответе я хотел бы предложить 2 шаблона для вашей цели, которую я догадался.

Шаблон 1:

В этом шаблоне значение percent1 из var percent1 = sheetData[44][1] / sheetData[43][1]; изменено на 0.00%. В этом случае значение dod1 становится строкой.

From:
var dod1 = percent1.setNumberFormat('0.00%');
To:
var dod1 = Utilities.formatString("%1.2f%", percent1 * 100);

Шаблон 2:

В этом шаблоне объясняется метод использования setNumberFormat. Если вы хотите изменить числовой формат ячейки «A1» на активном листе, вы можете использовать следующий сценарий. В этом случае в качестве числа можно использовать значение ячейки «А1».

var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getRange("A1");
range.setNumberFormat('0.00%');

Использованная литература:

Танайке. Если можно, еще одна небольшая вещь: если я хочу, чтобы Pattern1 использовался таким образом с некоторым форматированием, например «[Зеленый]+#,##0;[Красный]-#,##0», есть ли способ сделать это? Я хотел бы сделать формат богатым на основе положительных/отрицательных чисел, если это возможно.

oki_oki 14.12.2020 03:17

@oki_oki Спасибо за ответ. Я рад, что ваша проблема была решена. Что касается вашего нового вопроса, я хотел бы поддержать вас. Но я должен извиниться за мое плохое знание английского языка. К сожалению, я не могу понять ваш новый вопрос. Итак, чтобы правильно понять это, можете ли вы опубликовать его как новый вопрос, включая дополнительную информацию, используя образцы значений? Таким образом, это поможет пользователям, включая меня, подумать о решении. Если вы можете сотрудничать, чтобы решить вашу проблему, я рад. Можете ли вы сотрудничать, чтобы решить ваш новый вопрос?

Tanaike 14.12.2020 03:24

Танайке - вот мой новый вопрос. Было бы полезно, если бы вы могли быстро взглянуть.stackoverflow.com/questions/65282966/…

oki_oki 14.12.2020 03:42

Другие вопросы по теме

Удаление элемента из списка после выбора выпадающего списка Googlesheets Script
Моделирование получения критериев фильтра - Ошибка | Скрипт Google Apps
Как передать параметр объекта массива с веб-сайта vue в google appscript, чтобы установить значение столбца электронной таблицы Google
Ссылка не существует с пользовательской функцией - скрипт google
Исключение: невозможно вызвать SpreadsheetApp.getUi() из этого контекста. (строка 2, файл "Код")
Добавьте URI перенаправления к автоматически сгенерированному идентификатору клиента Google OAuth 2.0
Сохранение данных строк электронной таблицы в PDF с использованием шаблона Gdoc с использованием скрипта Google Apps
Объедините два многомерных массива, сопоставив выбранный столбец, и верните новый массив со всеми строками и столбцами
Как разобрать данные API в гугл листы
Изменить значение ячейки в зависимости от цвета фона ячейки в Google Sheets