ЕСЛИ вернуть Google Apps Script GoogleSheets - PullRequest
0 голосов
/ 30 апреля 2018

У меня есть простое приложение, которое отслеживает активность (onEdit) на вкладках электронной таблицы, за исключением двух вкладок, назовите их «Лист1» и «Лист2». #

Фрагмент из кода:

  var ss = SpreadsheetApp.getActiveSpreadsheet(); 
  var sheetName = sheet.getName(); 
  var Sheet1 = ss.getSheetByName("Sheet1");
  var Sheet2 = ss.getSheetByName("Sheet2");
  if (sheetName == Sheet1 || sheetName == Sheet2) return;

Это не работает, и оно будет отслеживать изменения на этих листах. Пробуя другой метод:

  if (sheetName == Sheet1) return;
  if (sheetName == Sheet2) return;

Все еще не работает.

Однако, когда я пробую только один, например:

  if (sheetName == Sheet1) return;

Тогда он не будет следить за тем, что происходит на Листе1.

Как мне заставить его перестать смотреть на оба листа?

Спасибо

1 Ответ

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

Вы хотите запустить return, когда sheetName равно Sheet1 или Sheet2, которые являются именами листов. Если мое понимание верно, как насчет этой модификации?

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

  • В вашем скрипте sheetName это строка. О Sheet1 и Sheet2, до запуска var Sheet1 = ss.getSheetByName("Sheet1") и var Sheet2 = ss.getSheetByName("Sheet2"), это строки. Но после их запуска Sheet1 и Sheet2 становятся объектами Листа. В это время в if (sheetName == Sheet1 || sheetName == Sheet2) return; сравниваются «строка» и «объект». Таким образом, сравнение, которое вы хотите, не может быть выполнено. Если вы хотите получить «true» из этого сравнения, вы можете сделать это, изменив на sheetName = "Sheet". Но я не думаю, что это то, что вы хотите. Таким образом, чтобы решить эту проблему, я думаю, что 2 модели для вашей ситуации. Пожалуйста, проверьте их и выберите нужный шаблон.

Шаблон 1

sheetName сравнивается с Sheet1 и Sheet2, которые являются именами листов.

Модифицированный скрипт:

var sheetName = sheet.getName();
if (sheetName == "Sheet1" || sheetName == "Sheet2") return;

Шаблон 2

Хотя я не уверен относительно sheet из sheet.getName() из вашего вопроса, если вы хотите сравнить листы после того, как он подтвердит, существуют ли Sheet1 и Sheet2 в активной электронной таблице, пожалуйста, измените следующим образом .

Модифицированный скрипт:

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetName = sheet.getName(); 
var Sheet1 = ss.getSheetByName("Sheet1");
var Sheet2 = ss.getSheetByName("Sheet2");
if ((Sheet1 && sheetName == Sheet1.getName()) || (Sheet2 && Sheet2.getName())) return;

Примечание:

  • В этом измененном сценарии Sheet1 && из Sheet1 && sheetName == Sheet1.getName() используется для проверки существования Sheet1. Sheet2 тоже самое.

Если я неправильно понимаю ваш вопрос, извините.

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