Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function onOpen() {
- var ui = SpreadsheetApp.getUi();
- ui.createMenu('Trigger Automations')
- .addItem('Send All Rows', 'sendAllRowsToWebhook')
- .addItem('Send Selected Rows', 'showRowSelectionDialog')
- .addToUi();
- }
- function showRowSelectionDialog() {
- var ui = SpreadsheetApp.getUi();
- var response = ui.prompt('Send Selected Rows to Webhook', 'Enter row numbers or a range (e.g., 2-5):', ui.ButtonSet.OK_CANCEL);
- if (response.getSelectedButton() === ui.Button.OK) {
- var userInput = response.getResponseText();
- sendSelectedRowsToWebhook(userInput);
- }
- }
- function sendSelectedRowsToWebhook(userInput) {
- var webhookUrl = 'AUTOMATIONS_WEBHOOK_URL';
- var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
- var sheet = spreadsheet.getActiveSheet();
- var dataRange = sheet.getDataRange();
- var data = dataRange.getValues();
- var headers = data[0];
- // Parse the user input to determine which rows to send
- var selectedRows = parseUserInput(userInput, data.length);
- if (selectedRows.length === 0) {
- SpreadsheetApp.getUi().alert('No valid rows selected. Please enter a valid range or row numbers.');
- return;
- }
- for (var i = 0; i < selectedRows.length; i++) {
- var rowIndex = selectedRows[i] - 1; // Adjust for 0-based indexing
- var rowData = data[rowIndex];
- var jsonData = {};
- for (var j = 0; j < headers.length; j++) {
- jsonData[headers[j]] = rowData[j];
- }
- var jsonString = JSON.stringify(jsonData);
- var options = {
- 'method': 'post',
- 'contentType': 'application/json',
- 'payload': jsonString
- };
- var response = UrlFetchApp.fetch(webhookUrl, options);
- Logger.log(response.getContentText());
- // Pause briefly to avoid rate limiting (adjust as needed)
- Utilities.sleep(1000); // 1 seconds
- }
- }
- function parseUserInput(userInput, maxRows) {
- var selectedRows = [];
- // Split user input by commas
- var inputParts = userInput.split(',');
- for (var i = 0; i < inputParts.length; i++) {
- var part = inputParts[i].trim();
- if (part.indexOf('-') !== -1) {
- // Handle ranges (e.g., 2-5)
- var rangeParts = part.split('-');
- if (rangeParts.length === 2) {
- var start = parseInt(rangeParts[0]);
- var end = parseInt(rangeParts[1]);
- for (var j = start; j <= end && j <= maxRows; j++) {
- selectedRows.push(j);
- }
- }
- } else {
- // Handle individual row numbers
- var rowNumber = parseInt(part);
- if (!isNaN(rowNumber) && rowNumber >= 1 && rowNumber <= maxRows) {
- selectedRows.push(rowNumber);
- }
- }
- }
- return selectedRows;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement