ошибка кодирования Java-скрипта? не удается привести содержимое ячейки в соответствие

#javascript #excel

#javascript #excel

Вопрос:

я работал над рабочим проектом. я хочу узнать из набора диапазонов ячеек, находится ли в определенном диапазоне дат определенное хранилище, а затем подсчитать, сколько раз это хранилище отображается внутри диапазона. у меня формула в основном работает. но когда я сравниваю хранилище с уникальными значениями в диапазоне, оно не совпадает, даже если входные данные для первого значения и второго совпадают.

 Array.prototype.getUnique = function () {
    var u = {}, a = [];
    for (var i = 0, l = this.length; i < l;   i) {
        if (u.hasOwnProperty(this[i])) {
            continue;
        }
        a.push(this[i]);
        u[this[i]] = 1;
    }

  return a;
}   
    function countOnDate(datestart,dateend,daterange,sheet,valuesrange){
      var datestart = Utilities.formatDate(new Date(datestart), "GMT 1", "M/d/yyy")
      var dateend = Utilities.formatDate(new Date(dateend), "GMT 1", "M/d/yyy")
      var range = sheet.getRange(daterange).getValues();
      var countrange = sheet.getRange(valuesrange).getValues()
      var count = [];
      var countrangeunique = countrange.getUnique()
      //Logger.log("countrange:" countrange)
      //Logger.log("unique" countrangeunique)
      for (var a =0;a < countrangeunique.length;a  ){
        var countnumber = 0;
        for (var b = 0; b < range.length;b  ){
          if (range[b] !="" || range[b] !=[]){
          var rangeformated = Utilities.formatDate(new Date(range[b]),"GMT 1","M/d/yyy")
          Logger.log((datestart <= rangeformated)  ":" (rangeformated <= dateend))    
          if (datestart <= rangeformated amp;amp; rangeformated <= dateend){
            Logger.log("activestore:" countrangeunique[a] " storescan:" countrange[b] "match:" (countrange[b] == countrangeunique[a]))    
            if (countrange[b] == countrangeunique[a]) {
                  countnumber  
                  count[a][0] = countrangeunique[a] 
                  count[a][1] = countnumber
                  Logger.log("counternumber" countnumber " store: " countrangeunique[a])
              }
          }
        }
      }
      }   
  

итак, сверху начинается функция count unique для поиска уникального значения в диапазоне хранения i3: i .. которое вводится через переменную «valuesrange».
в этом диапазоне содержатся идентификационные номера хранилища. для магазинов сотрудник отработал ie 2512,1533.
функция подсчета даты ищет уникальные идентификаторы хранилища. Затем для каждого числа проверяет диапазон дат, чтобы убедиться, что даты находятся в пределах этого месяца. они вводятся с помощью «datestart», то есть начала месяца. «окончание даты», то есть конец месяца. и диапазон дат. даты, которые отработал сотрудник, указаны в формате «м / д / гггг». если даты не находятся внутри месяца или если они пустые, их следует игнорировать, и система переходит к следующему. затем он сравнивает уникальный номер с диапазоном номеров хранилища внутри месяца и должен их подсчитать. однако countrange[b] == countrangeunique [a] не соответствует, даже если значения совпадают. как я могу это исправить? прямо сейчас отображается мой журнал.

pastebinlog

Ответ №1:

решение, которое я нашел, состояло в том, чтобы заставить js анализировать возвращаемые значения как int, используя parseInt (значение, 10). удачи всем, у кого еще есть эта проблема.