Saltar al contenido principal

Documentation Index

Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt

Use this file to discover all available pages before exploring further.

Activar event streams

Habilita Event streams, una función complementaria de un plan de pago, para tu aplicación de OneSignal. Si no tienes acceso a esta función, no dudes en contactar a tu Success Manager o Account Executive para más información.

Crear un despliegue de apps script

Navega a Extensions > Apps Script en la Hoja de Google a la que deseas agregar eventos de mensajes de OneSignal. A continuación, dentro del editor de código, reemplaza el código existente con lo siguiente:
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);
}
A continuación, despliega tu proyecto. Haz clic en Deploy en la parte superior derecha y selecciona “Web App” como el tipo de despliegue. Proporciona una descripción y elige quién puede acceder al proyecto; seleccionaremos “Anyone” para generar la URL necesaria en el siguiente paso.

Crear el event stream

1
Desde el dashboard de OneSignal, navega a Settings > Event Streams (sujeto a función complementaria). Desde allí, crea un nuevo event stream y selecciona “Trigger when any of the following events occur”. Elige los eventos de mensajes que te gustaría sincronizar en la ventana emergente con Google Sheets. En el ejemplo a continuación, capturamos todos los eventos de Push Notification.
2
A continuación, en el paso de configuración, elige POST, pega la URL del paso anterior y crea un encabezado para aceptar el JSON.
3
Después de esto, selecciona “Custom Body” en el menú desplegable del Paso 3 y copia/pega el siguiente código. Puedes cambiar las propiedades y eventos que deseas sincronizar, como se muestra en el ejemplo a continuación. Para más información sobre las propiedades de eventos de event stream, visita nuestra documentación
{
  "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
Finalmente, selecciona “Save & Activate” para sincronizar los eventos de mensajes elegidos con la Hoja de Google. A continuación se muestra un ejemplo de cómo se renderiza el código de muestra anterior: