Скрипт Google, сравнивающий имя листа, возвращает False, когда должен возвращать True - PullRequest
0 голосов
/ 29 мая 2018

Итак, я пытаюсь заставить скрипт Google работать только на нескольких листах.Тем не менее, это не работает прямо сейчас.Я попытался записать в журнал проблему, чтобы увидеть, где она пошла не так, и у меня, похоже, та же самая строка сравнивается с самой собой, однако она возвращает FALSE.

Код и журналы:

function onEdit(e) {

    var activeSheet = e.source.getActiveSheet();
    var activerange = e.range;
  var activeSheetName = activeSheet.getName()
  var ValidRange = {
    top : 3,
    bottom : 200,
    left: 4,
    right: 4,
  };
  var ThisColumn = activerange.getColumn


    Logger.log("active_range: " + activerange);
    Logger.log("active range col: " + activerange.getColumn + "active range row: " + activerange.getRow());
    Logger.log("active_range.value: " + activerange.getCell(1, 1).getValue());
    Logger.log("active_range. colidx: " + activerange.getColumnIndex());
    Logger.log("active sheet: " + activeSheetName);
  Logger.log("RWC Test: " + activeSheetName == "RWC CR's");
  Logger.log("STK Test: " + activeSheetName == "STK CR's");
  Logger.log("Comment Test: " + activeSheetName == "Comment Database");


  if (ThisColumn < activerange.left || ThisColumn > activerange.right) return;
  if (activeSheet.getName() == "RWC CR's" || activeSheet.getName() == "STK CR's" || activeSheet.getName() == "BTWD CR's"){
    var FormulaToUse = range.offset(0, -1).getformula();
   range.SetFormula = FormulaToUse
  };

}



function test_onEdit() {
  onEdit({
    user : Session.getActiveUser().getEmail(),
    source : SpreadsheetApp.getActiveSpreadsheet(),
    range : SpreadsheetApp.getActiveSpreadsheet().getActiveCell(),
    value : SpreadsheetApp.getActiveSpreadsheet().getActiveCell().getValue(),
    authMode : "LIMITED"
  });
}

Журналы:

[18-05-29 12:44:31:226 PDT] active_range: Range  
[18-05-29 12:44:31:227 PDT] active range col: function getColumn() {/*
*/}  
active range row: 1  
[18-05-29 12:44:31:228 PDT] active_range.value: ID  
[18-05-29 12:44:31:229 PDT] active_range. colidx: 1  
[18-05-29 12:44:31:230 PDT] active sheet: Comment Database  
[18-05-29 12:44:31:230 PDT] false  
[18-05-29 12:44:31:231 PDT] false  
[18-05-29 12:44:31:231 PDT] false  

Ожидаемое поведение: 3-е значение False в журнале должно быть True - «База данных комментариев» - это строка, которая сравнивается с более ранней «Базой данных комментариев», которая должна возвращать «True», а не "Ложь"

Извините, если я допустил какую-то глупую языковую ошибку, относительно новую для скриптов Google

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

1 Ответ

0 голосов
/ 29 мая 2018

порядок операций - ваша проблема

Вы делаете это:

("Comment Test: " + activeSheetName) == "Comment Database"

Вы добавляете строку в переменную и смотрите, равно ли она чему-то другому, поэтому "Comment Test: Comment Database" небудет равен "Comment Database".

Измените его на

Logger.log("Comment Test: " + (activeSheetName == "Comment Database"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...