Что нужно сделать, чтобы поделиться сценарием с несколькими листами через gsuite?

Что я хочу делать в своей учетной записи gsuite:

Чтобы (динамически) связать скрипт с несколькими листами, чтобы я мог хранить их общий код в одном файле. (например, заполните настраиваемое меню параметрами, которые отображаются при открытии таблицы.)

Что я пробовал:

  • создал сценарий с помощью редактора сценариев на странице https://script.google.com, но не смог связать сценарий с листом
  • загрузка созданного извне скрипта через опцию редактора скриптов "Файл> открыть"
  • создание сценария непосредственно из листа с помощью параметра редактора сценария из меню листа, но не было найдено возможности поделиться им
  • публикация сценария, но похоже, что это делает сценарий доступным для широкой публики
  • Я читал о сценариях с привязкой к контейнеру, но нахожу документацию неясной и я не уверен, что делать дальше.

person Shane    schedule 08.12.2017    source источник


Ответы (1)


твоя первая идея была хорошей:

создал сценарий с помощью редактора сценариев на странице https://script.google.com, но не смог связать сценарий с листом

С помощью скрипта вы можете редактировать несколько листов, используя их идентификаторы. Например:

// this function edits two sheets at once
function editBothCells() {

  // assigns a variable to a spreadsheet
  var ss1 = SpreadsheetApp.openById("1CMLVG3Wnk4C-Ck0j7YKY_vgZZNj58mip_VRNUdrjpy8");
  var ss2 = SpreadsheetApp.openById("1kxC_0AwCwapVWG5grRNBLSHYhKpcVOHbrXTZdG9fOc4");

  // runs a function on both spreadsheets
  boldenA4(ss1,ss2);
}

// this function takes cell A4 and makes it bold for all arguments
function boldenA4(spreadsheet1, spreadsheet2, and_so_on){

  for(var i = 0; i < arguments.length; i++){
    arguments[i].getSheets()[0]
    .getRange("A4")
    .setValue("hello stackoverflow") // could be any string 
    .setFontWeight("bold"); 
  }
}

Ниже приведены ссылки на оба листа и сценарий:

person Antoine Colson    schedule 09.12.2017
comment
Мне пришлось изменить свой вопрос, потому что это отвечает на то, что я спросил, но я не смог уточнить, что я имел в виду! :) Я надеюсь создать меню с общими функциями, которые предназначены для работы на любом листе, открытом в определенной папке. - person Shane; 04.01.2018