Запретить предоставление разрешений в моих собственных скриптах Google каждый раз - PullRequest
0 голосов
/ 12 июня 2018

Ситуация:

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

Теперь это только выполняется на моем листе.Думаю, нет необходимости публиковать что-то вроде этого:)

К моей проблеме:

У меня есть основной рабочий лист, и я копирую его каждую неделю, потому что один лист решает только одиннеделю.Мой скрипт заставляет меня предоставлять ему разрешения, чтобы он мог выполнять описанные выше действия на текущем листе.Но каждый раз, когда я копирую лист (так каждую неделю), мне приходится снова проверять разрешения.Просматривая мой аккаунт Google, я вижу, что предоставленные разрешения вызывают у меня головную боль, поскольку существует множество записей для предоставления разрешений: (* ​​1013 *

Вопрос:

Есть ли способ остаться в натуральной форме?режима разработчика для предотвращения этого запроса разрешений?

Почему я должен иметь большие разрешения для своего собственного сценария?

function onOpen(e) {
  var menu = SpreadsheetApp.getUi().createMenu('Custom Menu');
      menu.addItem('Add Ticket', 'addTicket');
      menu.addItem('Rename to KW XX', 'renameDocument');
      menu.addToUi();
}

function addTicket() {
  var ui     = SpreadsheetApp.getUi(); // Same variations.
  var sheet  = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var myCell = sheet.getActiveCell();
  var result = ui.prompt(
      'Add Ticket',
      'Please enter Ticket-link:',
      ui.ButtonSet.OK_CANCEL);

  // Process the user's response.
  var button = result.getSelectedButton();
  var link   = result.getResponseText();
  
  if (button == ui.Button.OK) {
    var n        = link.lastIndexOf('/');
    var linkName = link.substring(n+1);
    var vals     = myCell.setValue('=HYPERLINK("' + link +  '";"' + linkName + '")');
  } else if (button == ui.Button.CANCEL) {
    // User clicked "Cancel".
    ui.alert('You cancled adding ticket.');
  } else if (button == ui.Button.CLOSE) {
    // User clicked X in the title bar.
    ui.alert('You closed the dialog. No ticket was inserted.');
  }
}

function renameDocument() {
  eval(UrlFetchApp.fetch('https://momentjs.com/downloads/moment-with-locales.js').getContentText());
  var sheet = SpreadsheetApp.getActive();
  var doc   = DocumentApp.getActiveDocument();
  moment.locale('de');
  var kw    = moment().format('ww');
  var name  = sheet.getName();
  sheet.setName('KW ' + kw);
}

1 Ответ

0 голосов
/ 14 июня 2018

Я понимаю, что под "листом" вы подразумеваете электронную таблицу, то есть рабочую книгу, документ и файл, потому что использование сценария на нескольких листах, находящихся в одной электронной таблице, не требует авторизации сценария для каждого из них, и потому что вы видите«множество записей для предоставления разрешений»

Также я понимаю, что ваш сценарий находится в проекте сценария, ограниченном электронной таблицей.

Когда мы сделаем копию электронной таблицы, она будет содержать копию ограниченного к ней скриптового проекта.Новая электронная таблица и ее ограниченный проект, поскольку они представляют собой разные файлы, и политика Google гласит, что авторизация для запуска сценария предоставляется сценарием проекта.

Способ избежать большого количества копий одного и того же кодакод и нужно авторизовать каждый из них, это использовать дополнение, вот почему я голосую, чтобы закрыть этот вопрос как дубликат Использовать скрипт во всех таблицах

В любом случае ответна

Есть ли способ остаться в режиме разработчика, чтобы запретить запросы на разрешение?

это разработка дополнения .

и

Почему у меня большие права на собственный сценарий?

Поскольку вас не просят предоставить разрешения для одного сценария, который выпросят предоставить разрешение на каждую копию.

Стоит отметить, что помимо головной боли необходимости предоставления разрешений для каждой копии, если вы внесли изменение в «свой сценарий», оно будет только на компьютере.Для проекта ript, в котором вы его пишете, это изменение не будет «распространено» на копии.

Альтернативой является использование библиотеки, но вам все равно придется предоставить разрешения для каждого проекта сценария, в котором вы используете библиотеку.

Что касается платы разработчика за публикацию в Google Chrome Web Store, вы можете запустить свое дополнение в тестовом режиме, но вам придется добавить каждый файл в соответствующий список, что не очень удобно для обработки большихсписок файлов.

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