Создание надстроек в Google Apps Script - PullRequest
0 голосов
/ 09 января 2020

Я собрал некоторый код, к которому я хотел бы получить доступ на других листах 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);
    }
  }
}

Любая помощь будет оценена.

Спасибо

1 Ответ

0 голосов
/ 09 января 2020

Чтобы использовать надстройку в других файлах, вам необходимо выполнить одно из следующих действий:

(1) Publi sh надстройка, как объяснено здесь .

(2) Проверьте надстройку с помощью Run > Test as add-on.... Я бы не рекомендовал это, поскольку вам нужно было бы сначала добавить каждый файл, с которым вы хотите использовать надстройку, и открыть его оттуда.

Обходной путь (используйте библиотеку):

Возможный обходной путь для достижения вашей цели: рассмотреть, для чего вы хотите надстройку, вместо использования своего кода в качестве надстройки, сохранить его в библиотеке , а затем включить это в каждом файле, который вы хотите запустить (вам нужно изменить createAddonMenu на createMenu).

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