Скрипт Google Apps .getMonth не работает, если нет доступного "возврата" - PullRequest
0 голосов
/ 05 мая 2020

Я пытаюсь использовать «get.Month», но когда я запускаю код, появляется ошибка:

«TypeError: exSheet.getRange (...). GetValue (... GetMonth не является функцией "

Когда я помещаю" return tempSum; " вне «if» ошибок нет, и код не работает ...

Я пробовал поставить «.setValue» вместо «return», но это не помогло.

Кто-нибудь знает, как исправить это?

function CALC_EX(chosenMonth){

  switch(chosenMonth){
  case "jan":
    chosenMonth = 1;
    break;
  case "feb":
    chosenMonth = 2;
    break;
  case "mar":
    chosenMonth = 3;
    break;
  case "apr":
    chosenMonth = 4;
    break;
  case "may":
    chosenMonth = 5;
    break;
  case "jun":
    chosenMonth = 6;
    break;
  case "jul":
    chosenMonth = 7;
    break;
  case "aug":
    chosenMonth = 8;
    break;
  case "sep":
    chosenMonth = 9;
    break;
  case "oct":
    chosenMonth = 10;
    break;
  case "nov":
    chosenMonth = 11;
    break;
  case "dec":
    chosenMonth = 12;
  }

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var exSheet = ss.getSheetByName('Expenses');
  var tempSum = 0;

  for(var i=2;i>0;i++){
    var range = exSheet.getRange(i, 5);
    var monthCell = exSheet.getRange(i, 5).getValue().getMonth()+1;

    if(!range.getValue()){
      i = 0;
      return tempSum;
    }
    if(monthCell === chosenMonth){
      tempSum = tempSum + exSheet.getRange(i, 12).getValue();
    }
  }
}

1 Ответ

2 голосов
/ 05 мая 2020

getMonth() - это функция Javascript, которая может применяться только к объекту даты

TypeError: SpreadsheetApp.getActiveSheet (...). GetRange (. ..). getValue (...). getMonth не является функцией

означает, что значение вашей ячейки не распознается правильно как объект даты, вы можете проверить это с помощью Logger.log(typeof exSheet.getRange(i, 5).getValue());

Убедитесь, что ячейки, которые вы повторяете, действительно являются датами (а не строками или пустыми ячейками), и при необходимости установите тип данных на дату, например, перейдя из пользовательского интерфейса Google Sheets на Format->Number->Date. В зависимости от настроек Locale вам может потребоваться изменить формат даты.

Если вы не видите вашу электронную таблицу, скорее всего, причина ошибки связана с вашим определением l oop, как указано из Мастера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...