Aktywatory do zainstalowania

Tak jak w przypadku prostych reguł, aktywatory możliwe do zainstalowania pozwalają Apps Script uruchamia funkcję automatycznie, gdy określone zdarzenie takich jak otwarcie dokumentu. Wyzwalacze instalacyjne oferują jednak więcej są bardziej elastyczne niż proste reguły: mogą wywoływać usługi które wymagają autoryzacja, oferują kilka dodatkowych typów zdarzeń, w tym zdarzenia czasowe (zegarowe), i można nimi sterować automatycznie. Zarówno wyzwalacze dostępne do zainstalowania, Apps Script przekazuje uruchomioną funkcję obiekt zdarzenia zawierający informacje o kontekście zdarzenia.

Ograniczenia

Mimo że reguły instalacyjne oferują większą elastyczność niż proste, nadal podlegają kilku ograniczeniom:

  • Nie działają, jeśli plik jest otwarty w trybie tylko do odczytu (wyświetlanie lub komentowanie). Dla: samodzielnych skryptów, użytkownicy muszą mieć co najmniej uprawnienia do wyświetlania pliku skryptu w aby aktywatory działały prawidłowo.
  • Wykonanie skryptu i żądanie interfejsu API nie powoduje uruchomienia aktywatorów. Przykład: połączenia FormResponse.submit() przesłanie nowej odpowiedzi formularza nie powoduje uruchomienia reguły przesłania formularza.

  • Aktywatory instalacyjne zawsze działają na koncie osoby, która utworzyła . Jeśli na przykład utworzysz otwarty aktywator z możliwością zainstalowania, będzie on gdy współpracownik otworzy dokument (jeśli ma uprawnienia do edycji), ale działa jako Twoje konto. Oznacza to, że jeśli utworzysz regułę, aby wyślij e-maila po otwarciu dokumentu, wiadomość e-mail jest zawsze wysyłana z adresu swoje konto. Nie musi to być konto, z którego otworzyłeś dokument. Pamiętaj jednak: można utworzyć aktywator możliwy do zainstalowania dla każdego konta, w jednym e-mailu wysłanym z każdego konta.

  • Dane konto nie widzi aktywatorów zainstalowanych z drugiego konta, nawet jednak na pierwszym koncie nadal można je aktywować.

  • Aktywatory możliwe do zainstalowania podlegają aktywatorowi Apps Script limity.

Aktywatory czasowe

Reguła oparta na czasie (zwana też regułą zegara) jest podobna do zadanie cron w systemie Unix. Reguły oparte na czasie pozwalają skrypty są wykonywane o określonym czasie lub w regularnych odstępach czasu, tak często, co minutę lub tak często, jak raz w miesiącu. (Pamiętaj, że dodatek może użyć reguły opartej na czasie maksymalnie raz na godzinę). Godzina może być nieco inna jest losowy – jeśli np. utworzysz cykliczny wyzwalacz o 9:00, Apps Script wybiera godzinę z przedziału od 9:00 do 10:00, a następnie zachowuje godzinę Ten okres odbywa się z dnia na dzień, czyli 24 godziny przed uruchamia się ponownie.

Oto przykład Aplikacja Google Chat który co minutę publikuje wiadomość w każdym pokoju, w którym znajduje się aplikacja:

// Example app for Google Chat that demonstrates app-initiated messages
// by spamming the user every minute.
//
// This app makes use of the Apps Script OAuth2 library at:
//     https://github.com/googlesamples/apps-script-oauth2
//
// Follow the instructions there to add the library to your script.

// When added to a space, we store the space's ID in ScriptProperties.
function onAddToSpace(e) {
  PropertiesService.getScriptProperties()
      .setProperty(e.space.name, '');
  return {
    'text': 'Hi! I\'ll post a message here every minute. ' +
            'Please remove me after testing or I\'ll keep spamming you!'
  };
}

// When removed from a space, we remove the space's ID from ScriptProperties.
function onRemoveFromSpace(e) {
  PropertiesService.getScriptProperties()
      .deleteProperty(e.space.name);
}

// Add a trigger that invokes this function every minute in the
// "Edit > Current Project's Triggers" menu. When it runs, it
// posts in each space the app was added to.
function onTrigger() {
  var spaceIds = PropertiesService.getScriptProperties()
      .getKeys();
  var message = { 'text': 'Hi! It\'s now ' + (new Date()) };
  for (var i = 0; i < spaceIds.length; ++i) {
    postMessage(spaceIds[i], message);
  }
}
var SCOPE = 'https://www.googleapis.com/auth/chat.bot';
// The values below are copied from the JSON file downloaded upon
// service account creation.
// For SERVICE_ACCOUNT_PRIVATE_KEY, remember to include the BEGIN and END lines
// of the private key
var SERVICE_ACCOUNT_PRIVATE_KEY = '...';
var SERVICE_ACCOUNT_EMAIL = 'service-account@project-id.iam.gserviceaccount.com';

// Posts a message into the given space ID via the API, using
// service account authentication.
function postMessage(spaceId, message) {
  var service = OAuth2.createService('chat')
      .setTokenUrl('https://accounts.google.com/o/oauth2/token')
      .setPrivateKey(SERVICE_ACCOUNT_PRIVATE_KEY)
      .setClientId(SERVICE_ACCOUNT_EMAIL)
      .setPropertyStore(PropertiesService.getUserProperties())
      .setScope(SCOPE);
  if (!service.hasAccess()) {
    Logger.log('Authentication error: %s', service.getLastError());
    return;
  }
  var url = 'https://chat.googleapis.com/v1/' + spaceId + '/messages';
  UrlFetchApp.fetch(url, {
    method: 'post',
    headers: { 'Authorization': 'Bearer ' + service.getAccessToken() },
    contentType: 'application/json',
    payload: JSON.stringify(message),
  });
}

Aktywatory oparte na zdarzeniach

Zainstalowane aktywatory oparte na zdarzeniach są koncepcyjnie podobne do proste reguły jak onOpen(), ale mogą reagować na dodatkowe zdarzenia i zachowują się w inny sposób.

Na przykład otwarty aktywator z możliwością zainstalowania dla Arkuszy Google aktywuje się za każdym razem, gdy arkusz kalkulacyjny zostanie otwarty przez dowolnego użytkownika z uprawnieniami do edycji, tak samo jak w przypadku prostego wyzwalacza onOpen(). Wersja do zainstalowania zadzwoń do usług, które wymagają autoryzacji. Instalacja działa za zgodą użytkownika, który ją utworzył, nawet jeśli inny użytkownik z uprawnieniami do edycji otworzy arkusz kalkulacyjny.

Istnieje kilka możliwych do zainstalowania aktywatorów dla Google Workspace aplikacji:

  • Możliwa do zainstalowania reguła otwarta jest uruchamiana, gdy użytkownik otwiera arkusz kalkulacyjny. dokument lub formularz, które mogą edytować.
  • Możliwy do zainstalowania aktywator edycji jest uruchamiany, gdy użytkownik modyfikuje wartość w arkusz kalkulacyjny.
  • Możliwa do zainstalowania aktywator zmiany jest uruchamiana, gdy użytkownik modyfikuje strukturę w arkuszu kalkulacyjnym, np. przez dodanie nowego arkusza lub usunięcie .
  • Możliwa do zainstalowania reguła przesłania formularza uruchamia się, gdy użytkownik odpowie na formularz. Są 2 wersje reguły związane z przesłaniem formularza: tylko dla Formularzy Google i jeden w przypadku Arkuszy, jeśli formularz jest przesyłany do arkusza kalkulacyjnego.
  • Możliwy do zainstalowania aktywator wydarzenia w kalendarzu jest uruchamiany, gdy wydarzenia w kalendarzu użytkownika które zostały zaktualizowane – zostały utworzone, edytowane lub usunięte;

Aktywatorów możliwych do zainstalowania możesz używać w samodzielnych i powiązanych skryptach. Przykład: samodzielny skrypt może automatycznie utworzyć możliwy do zainstalowania aktywator dla za pomocą wywołania dowolnego pliku Arkuszy Google TriggerBuilder.forSpreadsheet(key) i przekazywanie identyfikatora arkusza kalkulacyjnego.

Ręczne zarządzanie aktywatorami

Aby ręcznie utworzyć w edytorze skryptów aktywator możliwy do zainstalowania, wykonaj te czynności:

  1. Otwórz projekt Apps Script.
  2. Po lewej stronie kliknij Reguły .
  3. W prawym dolnym rogu kliknij Dodaj regułę.
  4. Wybierz i skonfiguruj typ aktywatora, który chcesz utworzyć.
  5. Kliknij Zapisz.

Automatyczne zarządzanie aktywatorami

Możesz też automatycznie tworzyć i usuwać reguły za pomocą Usługa skryptów Zacznij od rozmowy telefonicznej ScriptApp.newTrigger(functionName) , która zwraca TriggerBuilder

Poniższy przykład pokazuje, jak utworzyć 2 reguły działające w czasie. pożary co 6 godzin, a drugie uruchamiające się w każdy poniedziałek o 9:00 (w strefie czasowej wybrany skrypt).

triggers/triggers.gs
/**
 * Creates two time-driven triggers.
 * @see https://developers.google.com/apps-script/guides/triggers/installable#time-driven_triggers
 */
function createTimeDrivenTriggers() {
  // Trigger every 6 hours.
  ScriptApp.newTrigger('myFunction')
      .timeBased()
      .everyHours(6)
      .create();
  // Trigger every Monday at 09:00.
  ScriptApp.newTrigger('myFunction')
      .timeBased()
      .onWeekDay(ScriptApp.WeekDay.MONDAY)
      .atHour(9)
      .create();
}

Następny przykład pokazuje, jak utworzyć otwarty aktywator z możliwością zainstalowania dla arkusz kalkulacyjny. Należy zauważyć, że w przeciwieństwie do prostego wyzwalacza onOpen() skrypt instalowana reguła nie musi być powiązana z arkuszem kalkulacyjnym. Aby utworzyć tego wyzwalacza w samodzielnym skrypcie, po prostu zastąp SpreadsheetApp.getActive() z połączeniem do SpreadsheetApp.openById(id)

triggers/triggers.gs
/**
 * Creates a trigger for when a spreadsheet opens.
 * @see https://developers.google.com/apps-script/guides/triggers/installable
 */
function createSpreadsheetOpenTrigger() {
  const ss = SpreadsheetApp.getActive();
  ScriptApp.newTrigger('myFunction')
      .forSpreadsheet(ss)
      .onOpen()
      .create();
}

Aby programowo zmodyfikować istniejący aktywator możliwy do zainstalowania, musisz go usunąć. i utwórz nowy. Jeśli masz już zapisany identyfikator aktywatora, usuń go, przekazując identyfikator jako argument do poniższej funkcji.

triggers/triggers.gs
/**
 * Deletes a trigger.
 * @param {string} triggerId The Trigger ID.
 * @see https://developers.google.com/apps-script/guides/triggers/installable
 */
function deleteTrigger(triggerId) {
  // Loop over all triggers.
  const allTriggers = ScriptApp.getProjectTriggers();
  for (let index = 0; index < allTriggers.length; index++) {
    // If the current trigger is the correct one, delete it.
    if (allTriggers[index].getUniqueId() === triggerId) {
      ScriptApp.deleteTrigger(allTriggers[index]);
      break;
    }
  }
}

Błędy w aktywatorach

Gdy aktywator możliwy do zainstalowania zostanie uruchomiony, ale funkcja zgłosi wyjątek lub w przeciwnym razie nie będzie wyświetlany komunikat o błędzie ekranu. Ostatecznie, gdy uruchomi się reguła oparta na czasie lub aktywuje się inny użytkownik gdy nie korzystasz z reguły przesyłania formularza, być może nie jesteś przy komputerze.

Zamiast tego Apps Script wyśle Ci e-maila podobnego do tego:

From: noreply-apps-scripts-notifications@google.com
Subject: Summary of failures for Google Apps Script
Your script has recently failed to finish successfully.
A summary of the failure(s) is shown below.

E-mail zawiera link umożliwiający dezaktywację lub ponowne skonfigurowanie aktywatora. Jeśli skrypt to powiązane do Arkuszy, Dokumentów lub Formularzy Google e-mail zawiera też link do tego pliku. Dzięki tym linkom możesz: Aby naprawić błąd, dezaktywuj aktywator lub edytuj skrypt.

Aby sprawdzić wszystkie reguły powiązane z Twoim kontem Google oraz Dezaktywuj aktywatory, których już nie potrzebujesz, wykonaj te czynności:

  1. Wejdź na stronę script.google.com.
  2. Po lewej stronie kliknij Moje reguły.
  3. Aby usunąć regułę, po jej prawej stronie kliknij Więcej. Usuń aktywator.

Aktywatory w dodatkach

Oprócz aktywatorów możliwych do zainstalowania możesz używać aktywatorów manifestu w dodatków. Aby dowiedzieć się więcej, zobacz Wyzwalacze dodatków do Google Workspace.