Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Handles form submission and processes responses.
- *
- * @param {GoogleAppsScript.Events.Event} e - The form submission event.
- */
- const onFormSubmit = ({ response }) => {
- console.info("Form submission event received.");
- const itemResponses = response.getItemResponses();
- console.log("Total number of responses received:", itemResponses.length);
- // Helper function to handle undefined or null responses
- const getResponseOrDefault = (response, defaultValue = "--BLANK--") => {
- console.debug("Checking response:", response);
- return response !== undefined && response !== null ? response : defaultValue;
- };
- // Handle short line inputs, ensuring correct indexing
- const email = {
- address: getResponseOrDefault(itemResponses[0]?.getResponse()),
- fullname: getResponseOrDefault(itemResponses[1]?.getResponse()),
- ou: getResponseOrDefault(itemResponses[2]?.getResponse())
- };
- console.log("Email details after processing:", email);
- // Handle checkboxes with careful validation
- const checkboxResponse = itemResponses[3]?.getResponse();
- console.debug("Checkbox response received:", checkboxResponse);
- email.groups = Array.isArray(checkboxResponse) && checkboxResponse.length > 0
- ? checkboxResponse
- : ["--BLANK--"];
- console.log("Email groups after processing:", email.groups);
- // Handle other variables, ensuring correct indexing
- const ad = {
- dcsite: getResponseOrDefault(itemResponses[4]?.getResponse()),
- account: getResponseOrDefault(itemResponses[5]?.getResponse()),
- fullname: getResponseOrDefault(itemResponses[6]?.getResponse()),
- radiusgroup: getResponseOrDefault(itemResponses[7]?.getResponse())
- };
- console.log("AD details after processing:", ad);
- const notificationemail = getResponseOrDefault(itemResponses[8]?.getResponse());
- const bccemail = getResponseOrDefault(itemResponses[9]?.getResponse());
- console.log("Notification Email:", notificationemail);
- console.log("BCC Email:", bccemail);
- // Construct payload
- const payload = {
- "email.address": email.address,
- "email.fullname": email.fullname,
- "email.ou": email.ou,
- "email.groups": email.groups,
- "ad.dcsite": ad.dcsite,
- "ad.account": ad.account,
- "ad.fullname": ad.fullname,
- "ad.radiusgroup": ad.radiusgroup,
- notificationemail,
- bccemail
- };
- console.info("Constructed payload:", JSON.stringify(payload));
- // Send HTTP POST
- const url = "https://HTTPPOSTONAZURELOGICAPP";
- const options = {
- method: "post",
- headers: {
- "Content-Type": "application/json"
- },
- payload: JSON.stringify(payload),
- followRedirects: true,
- muteHttpExceptions: true
- };
- console.info("Sending HTTP POST request to:", url);
- try {
- const response = UrlFetchApp.fetch(url, options);
- console.log("HTTP POST request successful.");
- const json = response.getContentText();
- console.debug("Response content text:", json);
- const data = JSON.parse(json);
- console.info("Parsed response data:", data);
- } catch (error) {
- console.error("Error in HTTP POST:", error);
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment