Passer au contenu principal

Activer les flux d’événements

Activez les Flux d’événements, une fonctionnalité complémentaire à un plan payant, pour votre application OneSignal. Si vous n’avez pas accès à cette fonctionnalité, n’hésitez pas à contacter votre Success Manager ou Account Executive pour plus d’informations.

Créer un déploiement de script d’applications

Accédez à Extensions > Apps Script dans la feuille Google Sheet dans laquelle vous souhaitez ajouter les événements de messages OneSignal. Ensuite, dans l’éditeur de code, remplacez le code existant par le suivant :
function doPost(e) {
    // Log the full request for debugging purposes
  Logger.log("Request received: " + JSON.stringify(e));

  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  let jsonData;

  try {
    // Log the postData.contents before parsing
    Logger.log("Post Data Contents: " + e.postData.contents);

    // Attempt to parse the JSON data
    jsonData = JSON.parse(e.postData.contents);
  } catch (error) {
    // Log the error and return an error response
    Logger.log("Failed to parse JSON: " + error);
    return ContentService.createTextOutput(
      JSON.stringify({ status: "error", message: "Invalid JSON" }),
    ).setMimeType(ContentService.MimeType.JSON);
  }

  // Check if the sheet is empty and set headers if necessary
  if (sheet.getLastRow() === 0) {
    sheet.appendRow([
      "User ID",
      "Event ID",
      "Event",
      "Message ID",
      "Message Name",
      "Message Title",
      "Message Contents",
      "Template ID",
      "Subscription ID",
      "Subscription Device Type",
      "Source",
      "Original Timestamp",
    ]);
  }

  // Prepare the row data from the JSON object
  const row = [
    jsonData.user_id || "",
    jsonData.event_id || "",
    jsonData.event || "",
    jsonData.properties ? jsonData.properties.message_id || "" : "",
    jsonData.properties ? jsonData.properties.message_name || "" : "",
    jsonData.properties ? jsonData.properties.message_title || "" : "",
    jsonData.properties ? jsonData.properties.message_contents || "" : "",
    jsonData.properties ? jsonData.properties.template_id || "" : "",
    jsonData.properties ? jsonData.properties.subscription_id || "" : "",
    jsonData.properties
      ? jsonData.properties.subscription_device_type || ""
      : "",
    jsonData.properties ? jsonData.properties.source || "" : "",
    jsonData.originalTimestamp || "",
  ];

  try {
    // Append the new row to the sheet
    sheet.appendRow(row);
  } catch (error) {
    // Log the error if appending the row fails
    Logger.log("Failed to append row: " + error);
    return ContentService.createTextOutput(
      JSON.stringify({ status: "error", message: "Failed to append row" }),
    ).setMimeType(ContentService.MimeType.JSON);
  }

  // Return a success response
  return ContentService.createTextOutput(
    JSON.stringify({ status: "success" }),
  ).setMimeType(ContentService.MimeType.JSON);
}
Ensuite, déployez votre projet. Cliquez sur Deploy en haut à droite et sélectionnez “Web App” comme type de déploiement. Fournissez une description et choisissez qui peut accéder au projet ; nous sélectionnerons “Anyone” pour générer l’URL nécessaire à l’étape suivante.

Créer le flux d’événements

1
Depuis le tableau de bord OneSignal, accédez à Settings > Event Streams (soumis à la fonctionnalité complémentaire). De là, créez un nouveau flux d’événements et sélectionnez “Trigger when any of the following events occur”. Choisissez les événements de messages que vous souhaitez synchroniser dans la fenêtre contextuelle avec Google Sheets. Dans l’exemple ci-dessous, nous capturons tous les événements de notifications Push.
2
Ensuite, dans l’étape de configuration, choisissez POST, collez l’URL de l’étape précédente et créez un en-tête pour accepter le JSON.
3
Après cela, sélectionnez “Custom Body” dans le menu déroulant de l’étape 3 et copiez/collez le code suivant. Vous pouvez modifier les propriétés et les événements que vous souhaitez synchroniser, comme illustré dans l’exemple ci-dessous. Pour plus d’informations sur les propriétés d’événements des flux d’événements, consultez notre documentation
{
  "user_id": "{{ event.external_user_id }}",
  "event_id": "{{ event.id }}",
  "event": "{{ event.kind }}",
  "properties": {
    "message_id": "{{ message.id }}",
    "message_name": "{{ message.name }}",
    "message_title": "{{ message.title.en }}",
    "message_contents": "{{ message.contents.en }}",
    "template_id": "{{ message.template_id }}",
    "subscription_id": "{{ event.subscription_id }}",
    "subscription_device_type": "{{ event.subscription_device_type }}",
    "source": "onesignal"
  },
  "originalTimestamp": "{{ event.datetime }}"
}
4
Enfin, sélectionnez “Save & Activate” pour synchroniser les événements de messages choisis avec la feuille Google Sheet. Ci-dessous un exemple de la façon dont le code d’exemple ci-dessus s’affiche :