Использование сценария onedit для переключения формата столбца - PullRequest
0 голосов
/ 11 октября 2018

Я новичок в скрипте приложения Google.Это моя образец электронной таблицы. Я пытаюсь написать скрипт, в котором флажок переключает формат столбца (метрические / британские единицы).Работает только для первого случая, а не для второго.Я не уверен, почему (e.value == true / false) не работает.

function onEdit (e) {
  var Name = SpreadsheetApp.getActiveSheet().getName();
  Logger.log(Name)
  if (e.range.getA1Notation() === 'C19' && e.value == 'TRUE') {
    SpreadsheetApp.getActiveSheet().getRange("K2:K89").setNumberFormat("0.00oz")
  }
    else if (e.range.getA1Notation() === 'C19' && e.value == 'FALSE'){
      SpreadsheetApp.getActiveSheet().getRange("K2:K89").setNumberFormat("0.00g")
    }}

1 Ответ

0 голосов
/ 12 октября 2018

Вот фрагмент кода, который будет работать для изменения формата столбцов на основе ввода флажка:

  if (e.range.getA1Notation() == 'C19')
  { 
      if (e.value == 'TRUE') { 
          SpreadsheetApp.getActiveSheet().getRange("K2:K59").setNumberFormat("000.00lb");
      }
      else
     {
          SpreadsheetApp.getActiveSheet().getRange("K2:K59").setNumberFormat("000.00oz");
     }
  }

  if (e.range.getA1Notation() == 'C18'){

    if (e.value == 'TRUE') {
      SpreadsheetApp.getActiveSheet().getRange("L2:L59").setNumberFormat("##0.00gr");
    }
    else
    {
      SpreadsheetApp.getActiveSheet().getRange("L2:L59").setNumberFormat('##0.00"%"');
    }
  }

Это позволяет изменить формат столбцов K и L.Это только для иллюстративных целей, и вам также необходимо пересчитать метрические / имперские веса и т. Д.

Основная проблема, с которой я столкнулся, состоит в том, что (e.value == true) должно быть (e.value == 'TRUE').

Также выможет потребоваться использовать SpreadsheetApp.getActiveSheet() вместо SpreadsheetApp.getActiveSpreadSheet().

ПРИМЕЧАНИЕ: Экспериментально я обнаружил, что значением, возвращаемым флажком, являются строки 'TRUE' и 'FALSE' а не логическое значение.Так что if(e.value) не работает для проверки логического true и т. Д., Как вы ожидаете.Я открыт для исправления вышестоящими властями по этому вопросу, но форма (e.value == 'TRUE') была единственной, которую я мог заставить работать.

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