Я собрал некоторый код, к которому я хотел бы получить доступ на других листах Google, однако, поскольку он использует SpreadsheetApp.getUi, код должен быть привязан к листу. Поэтому я решил создать код как дополнение.
К сожалению, надстройки не появляются в других таблицах и исчезают из таблицы, где было создано дополнение, если я не открою страницу сценария приложений. Где я иду не так?
var ui = SpreadsheetApp.getUi();
var ss = SpreadsheetApp.getActiveSpreadsheet();
function onOpen(e) {
SpreadsheetApp.getUi().createAddonMenu()
.addItem("Delete Columns", "delCols")
.addItem("Insert Columns", "insCols")
.addItem("Subjects Sheet", "deptNamesKS4")
.addItem("Subjects Sheet", "deptNamesKS3")
.addToUi();
};
function onInstall(e) {
onOpen(e);
};
function delCols(e) {
var lastColumn = ss.getLastColumn();
var headers = ss.getRange('1:1').getValues();
var searchVal = ui.prompt("Enter name of column to be deleted").getResponseText()
var names = headers[0];
var loopCounter = names.length - 1
for (var i = loopCounter; i >= 1; i--) {
if(names[i].indexOf(searchVal) > -1) {
ss.deleteColumn(i + 1);
}DE
}
}
function insCols(e) {
var lastColumn = ss.getLastColumn();
var headers = ss.getRange('1:1').getValues();
var searchVal = ui.prompt("Enter name of column to be deleted").getResponseText();
var noCols = ui.prompt("Number of columns to be inserted").getResponseText();
var names = headers[0];
var loopCounter = names.length - 1
for (var i = loopCounter; i >= 1; i--) {
if(names[i].indexOf(searchVal) > -1) {
ss.insertColumnsBefore(i + 1, noCols);
}
}
}
Любая помощь будет оценена.
Спасибо