Я пытаюсь изменить этот скрипт приложения, чтобы иметь возможность искать лист, содержащий определенный идентификатор (например, 123), и сделать этот лист видимым / активированным, если лист назван abc123def.

Приведенный ниже код работает хорошо, если я ввожу полное имя листа abc123def, но я хочу ввести только часть имени листа, идентификатор, в данном случае 123.

Это работает для меня в PowerShell:

$match = "123"
$text = Get-Content -Path $fulltext | Select-String -Pattern $match
$text | Out-File -FilePath $output

Но я не уверен, как сделать аналогичное соответствие для нижеприведенного скрипта приложений:

function onOpen() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var menuItems=[{name: 'Go To Tab', functionName: 'goToTab'} ];
  ss.addMenu('Script', menuItems);
};

function goToTab() {
  var name = Browser.inputBox('Enter Tab Name:','',Browser.Buttons.OK_CANCEL);
  try {
    SpreadsheetApp.getActiveSpreadsheet().getSheetByName(name).activate();
  }
  catch(e) {
    Browser.msgBox('Sheet named: "' + name + '" does not exists!');
  }
};
1
Joe Berg 23 Сен 2018 в 20:18

1 ответ

Лучший ответ

Попробуй это:

function onOpen() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var menuItems = [{
        name: 'Go To Tab',
        functionName: 'goToTab'
    }];
    ss.addMenu('Script', menuItems);
};

function goToTab() {
    var name = Browser.inputBox('Enter Tab Name:', '', Browser.Buttons.OK_CANCEL);
    if (name) {
        try {
            //create a regex out of "name"
            regexp = new RegExp(name, 'g');
            //get all the sheets
            var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
            //go through all the sheets
            for (var i = 0; i < sheets.length; i++) {
                //if sheet name matches the user entry then activate and go out of the loop
                if (sheets[i].getName().match(regexp)) {
                    sheets[i].activate();
                    break;
                }
            }
        } catch (e) {
            Browser.msgBox('Sheet named: "' + name + '" does not exists!');
        }
    }
};
1
JSmith 23 Сен 2018 в 18:53