Как создать электронную таблицу со связанным скриптом? - PullRequest
0 голосов
/ 22 сентября 2019

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

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

Возможна ли такая вещь?

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

Ответы [ 2 ]

0 голосов
/ 23 сентября 2019

API-скрипт позволяет программно создавать проекты скриптов Apps с возможностью привязки их к Google Sheet

  • . Преобразуйте свой проект в проект облачной платформы и enable API скриптов приложений для этого проекта
  • Предоставьте своим проектам необходимые области в файле манифеста
  • Включите API скриптов приложений в скрипт скриптов приложений с помощью Urlfetch request
  • Создайте новый проект скриптов приложений с Method: projects.create, указав parentId
  • Добавьте содержимое в проект с Method: projects.updateContent,Вы можете сохранить содержимое в переменной и, таким образом, добавить одно и то же содержимое во все ваши проекты Apps Script.

Пример: файл JSON

{
  "timeZone": "America/New_York",
  "oauthScopes": [
    "https://www.googleapis.com/auth/spreadsheets",
    "https://www.googleapis.com/auth/script.projects",
    "https://www.googleapis.com/auth/script.external_request"
  ],
  "dependencies": {
  },
  "exceptionLogging": "STACKDRIVER"
}

.gs file

function createSpreadsheetwithScript() {

  var ss=SpreadsheetApp.create('mySpreadsheet');
  var id=ss.getId();
  var token = ScriptApp.getOAuthToken();
  var url = "https://script.googleapis.com/v1/projects";
  var payload = {
    "title": "myAutoCreatedScript",
    "parentId": id
  }
  var options = {
    "method" : "POST",
    "muteHttpExceptions": true,
    "headers": {
       'Authorization': 'Bearer ' +  token
     },
    "contentType": "application/json",
    "payload": JSON.stringify(payload)
  }
  var response = UrlFetchApp.fetch(url,options);
  var scriptId=JSON.parse(response).scriptId;
  var url2="https://script.googleapis.com/v1/projects/"+scriptId+"/content";
 //test content 
  var source="function myFunction() {\n var x=1;\n}";
  var JSONsource="{\"timeZone\":\"America/New_York\",\"exceptionLogging\":\"STACKDRIVER\"}";  
   var payload2 = {
  "files": [
    {
      "name": "this is the gs. file",
      "type": "SERVER_JS",
      "source": source
    },
    {
      "name": "appsscript",
      "type": "JSON",
      "source": JSONsource,
   "updateTime":"2018-03-04T19:49:08.871Z",
    "functionSet":{
      "values":[{"name":"myFunction"}]}
    }
  ]
}

var options2 = {
  "headers": {
     'Authorization': 'Bearer ' + token,
   }, 
  "contentType": "application/vnd.google-apps.script+json",
  "method" : "PUT", 
  "payload": JSON.stringify(payload2)
  }
  var response2 = UrlFetchApp.fetch(url2,options2); 
}

Убедитесь, что включили API-скрипт скриптов Apps , прежде чем использовать его в https://script.google.com/home/usersettings, и что ваш запрос upadteContent включает файл манифеста

Больше образцов

0 голосов
/ 22 сентября 2019

Чтобы написать пользовательскую функцию:

Создайте или откройте электронную таблицу в Google Sheets.

Выберите пункт меню Инструменты> Редактор сценариев.Если вам представлен экран приветствия, щелкните Пустой проект слева, чтобы начать новый проект.

Удалите любой код в редакторе скриптов ....

Выберите пункт меню Файл>Сохранить .... Все готово!

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