Как изменить мой код с нескольких операторов if на операторы Switch Case - PullRequest
0 голосов
/ 29 апреля 2018

У меня слишком много заявлений IF, как мне преобразовать мой код в стиль кейса?

вот пример моего кода Я много исследовал, я не могу заставить его работать с заявлениями по делу

function onEdit(e){

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetBoutons = ss.getSheetByName("Boutons");
var sheetINV = ss.getSheetByName("INV");
var sheetList = ss.getSheetByName("Liste de Bouttons")  
var rangeUSER = sheetBoutons.getRange(4, 2)
var rangeUSER2 = sheetBoutons.getRange(4, 3)
var USER = rangeUSER.getValues();



    switch(USER) {
      case 'Afficher-INV1':
        sheetINV.hideColumns(1,183);
        sheetINV.showColumns(22);
        sheetINV.showColumns(24);      
        rangeUSER2.setValue(rangeUSER.getValue());
        rangeUSER.clearContent();
        break;

    default: 
    break
    }}

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

Ответы [ 2 ]

0 голосов
/ 29 апреля 2018

Пример:

switch (n)
{
    case constant1:
        // code to be executed if n is equal to constant1;
        break;

    case constant2:
        // code to be executed if n is equal to constant2;
        break;
        .
        .
        .
    default:
        // code to be executed if n doesn't match any constant
}

Аналогично, для вашего кода это может быть как:

 switch (USER) {
      case 'Afficher-INV1':
        sheetINV.hideColumns(1,183);
        sheetINV.showColumns(22);
        sheetINV.showColumns(24);      
        rangeUSER2.setValue(rangeUSER.getValue());
        rangeUSER.clearContent();
        break;

      case 'Afficher-INV2':
        sheetINV.hideColumns(1,183);
        sheetINV.showColumns(22);
        sheetINV.showColumns(24);      
        rangeUSER3.setValue(rangeUSER.getValue());
        rangeUSER.clearContent();
        break;

    default: rangeUSER.clearContent();
    }
0 голосов
/ 29 апреля 2018

Дикая догадка, этот код JavaScript, с использованием таблиц Google.

getValues возвращает массив массивов значений. Это случайно приводит к значению ячейки (из-за того, что массивы длины 1 не добавляют никакой разницы). Но операторы switch в JavaScript сравниваются со строгим равенством "===" ( ссылка ), в котором [['abc']] === 'abc' является ложным.

Документация для getValues (ссылка выше) показывает пример, который индексирует в результате. Я бы посмотрел, поможет ли switch (USER[0][0]) { ... }.

...