我正在尝试修改此应用程序脚本,以便能够搜索包含特定ID(例如123)的工作表,并使该工作表可见/激活(如果工作表名为abc123def
)。
如果我输入工作表abc123def
的全名,下面的代码效果很好,但是我只想输入工作表名称的一部分,即ID(在本例中为123
)。
这在PowerShell中对我有用:
$match = "123"
$text = Get-Content -Path $fulltext | Select-String -Pattern $match
$text | Out-File -FilePath $output
但是我不确定如何为下面的Apps脚本进行类似的匹配:
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!');
}
};
最佳答案
尝试这个:
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!');
}
}
};
关于javascript - 应用程序脚本以匹配包含ID的工作表名称并使其可见,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52468504/