4tals / LinksForIsrael

פורטל יוזמות - חרבות ברזל
https://linksforisrael.com
22 stars 25 forks source link

Initiative Feedback Collection via Google Sheets and Webhook #452

Open 4tal opened 11 months ago

4tal commented 11 months ago
  1. Overview: A Google Spreadsheet will use Google Apps Script to provide a webhook endpoint. This endpoint will handle incoming HTTP POST requests containing feedback about a specific initiative, including its current status and various contact methods, storing them directly into the spreadsheet.

  2. Google Spreadsheet Setup:

Create a new Google Spreadsheet. Define columns: "InitiativeName", "IsActive", "Feedback", "Telegram", "WhatsApp", "Website", "LinkedIn".

  1. Google Apps Script:

Create a new script file from the Google Spreadsheet by clicking on Extensions > Apps Script. Write a script that: Creates a doPost(e) function to handle HTTP POST requests. Parses and validates the request body content. Appends valid data to the spreadsheet.

  1. Script Example:
function doPost(e) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var postData = JSON.parse(e.postData.contents);

  // Extract data from the POST request body
  var initiativeName = postData.initiativeName;
  var isActive = postData.isActive ? "Yes" : "No"; // Expecting a boolean value
  var feedback = postData.feedback;
  var telegram = postData.telegram || ""; // Optional fields
  var whatsapp = postData.whatsapp || "";
  var website = postData.website || "";
  var linkedin = postData.linkedin || "";

  // Append data to the sheet
  sheet.appendRow([initiativeName, isActive, feedback, telegram, whatsapp, website, linkedin]);

  // Return a success message
  return ContentService.createTextOutput(
    JSON.stringify({"status": "success"})
  ).setMimeType(ContentService.MimeType.JSON);
}
ohadschn commented 11 months ago

@4tal

  1. how is this backend and not devops? As I see it we still don't have a backend...
  2. what about creating Github issues from those GSheet records (presumably of the type https://github.com/4tals/LinksForIsrael/issues/428, where edit in the broad sense could also include "delete")?
4tal commented 11 months ago

Exactly, automated PR is the next step.

4tal commented 11 months ago

Because it function as a backend and not proper DevOps/infra area