Почему моя электронная таблица не меняется от входных значений внешнего источника? - PullRequest
2 голосов
/ 13 июня 2019

Поэтому я пытаюсь использовать внешний источник (Zapier) для ввода значений в мою электронную таблицу. Эти входные значения затем «транспонируются (по формуле)» в мою электронную таблицу, чтобы соответствовать координатам ячеек, с которыми они должны быть выровнены.

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

Однако, если бы я редактировал электронную таблицу «вручную», функция onEdit работает отлично.

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

UPDATE:

Итак, я обнаружил, что, если я вручную авторизую устанавливаемый триггер onChange, он будет работать. Но если я создам копию той же самой электронной таблицы, устанавливаемый триггер не будет существовать в копии. Копия должна иметь триггер без необходимости делать это вручную. Поэтому я пытаюсь создать код в редакторе скриптов Google, который позволит мне использовать функцию onChange или установить функцию onChange в Центре разработчика. Какие-нибудь мысли? Вот код, который я пытался, но не работал:

var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("My 
     Sheet") 

var ssid = "My SpreadSheet ID"; 
     ScriptApp.newTrigger('My Sheet) 
    .forSpreadsheet(ss.getId()) 
    .onChange() 
    .create(); 

    myFunction()
    {

Если есть альтернатива для функции onChange, то я весь в ушах. Мне просто нужна функция, которая может запускаться сама в моих копиях.

1 Ответ

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

В рамках совместной работы позвольте мне прояснить часть Zapier (этот ответ не касается части копирования).

Часть 1. Настройка Zapier

Предполагается, что у вас есть стороннее приложение, из которого вы извлекаете данные (кстати, поскольку вы решили использовать скрипт приложений, это не так.проще отбросить посредника, такого как Zapier, и подключиться к API приложения 3P - если он есть, ofc - напрямую?), вы создали Catch Hook и POST Action .

Настройка POST Action содержит несколько полей:

  1. URL поле - это то место, куда уходит ваш /exec URL (WebApp развертывается через Publish-> Deploy as WebApp).После развертывания сценария в качестве веб-приложения вы получите URL-адрес, к которому пользователи и сценарии могут обращаться с запросами (он всегда имеет формат https://script.google.com/macros/s/{yourProjectId}/exec - с небольшими различиями из-за прав доступа).Чтобы избежать проблем с разрешениями, установите для Кто имеет доступ к приложению значение любой или любой, даже анонимный (в противном случае вам придется разработать обработку аутентификации).).
  2. Payload Type здесь не имеет значения, но я рекомендую использовать поле JSON.
  3. Data, если вы выбрали действие POST и должнысодержит пары ключ-значение данных, которые вы хотите передать через Zapier (данные будут доступны в свойстве parameter / parameters объекта события ).

Часть 2. Настройка WebApp

Опубликованные веб-приложения должны иметь функцию doGet() или doPost(), чтобы можно было получать и обрабатывать запросы (или оба).Каждый из них принимает один специальный аргумент, который создается каждый раз, когда делается запрос к WebApp - объект события .

Объект события будет содержать все данные, отправленные вами из Zapier.Затем вы можете использовать эти данные для условного запуска различных функций, передачи данных обработчикам и т. Д. Таким образом, вместо того, чтобы полагаться на триггеры, вы можете создать функцию, которая вызывается внутри doGet / doPost, которая будет а) заполнять вашцелевой лист с новыми значениями;б) сделать что-нибудь еще после этого, действуя как аналог onEdit / onChange.

Полезные ссылки

  1. Объект события структура;
  2. Передача события объектов вокруг;
  3. Создание триггеров для других документов;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...