Wednesday, August 20, 2025

Broken real tool

Google Apps Script Dialog Generator

Google Apps Script Dialog Generator

Create searchable item selection dialogs for Google Sheets

Configuration

Dialog Preview

Loading items...
Item Code Item Name Price
ITM001 Sample Item 1 $10.00
ITM002 Sample Item 2 $25.50
\`) .setWidth(${dialogWidth}) .setHeight(${dialogHeight}); SpreadsheetApp.getUi().showModelessDialog(html, '${dialogTitle}'); } // Function to get all items from ${stockSheet} sheet function getItems() { try { const ss = SpreadsheetApp.getActiveSpreadsheet(); const stockSheet = ss.getSheetByName('${stockSheet}'); if (!stockSheet) { throw new Error('${stockSheet} sheet not found. Please check the sheet name.'); } const lastRow = stockSheet.getLastRow(); if (lastRow < 2) { return []; } const itemRange = stockSheet.getRange('B2:D' + lastRow); const values = itemRange.getValues(); return values.filter(row => row[0] !== '' || row[1] !== ''); } catch (error) { Logger.log('Error in getItems: ' + error.toString()); throw error; } } // Function to search items by code, name, or price function searchItems(searchTerm) { try { const ss = SpreadsheetApp.getActiveSpreadsheet(); const stockSheet = ss.getSheetByName('${stockSheet}'); if (!stockSheet) { throw new Error('${stockSheet} sheet not found. Please check the sheet name.'); } const lastRow = stockSheet.getLastRow(); const itemRange = stockSheet.getRange('B2:D' + lastRow); const values = itemRange.getValues(); return values.filter(row => row[0].toString().toLowerCase().includes(searchTerm.toLowerCase()) || row[1].toString().toLowerCase().includes(searchTerm.toLowerCase()) || row[2].toString().toLowerCase().includes(searchTerm.toLowerCase()) ); } catch (error) { Logger.log('Error in searchItems: ' + error.toString()); throw error; } } // Function to add the clicked item code, name, and price to the ${invoiceSheet} sheet function addItemTo${invoiceSheet.replace(/[^a-zA-Z0-9]/g, '')}(itemCode, itemName, price) { try { const ss = SpreadsheetApp.getActiveSpreadsheet(); const invoiceSheet = ss.getSheetByName('${invoiceSheet}'); if (!invoiceSheet) { throw new Error('${invoiceSheet} sheet not found. Please check the sheet name.'); } const lastRow = invoiceSheet.getLastRow(); const firstEmptyRow = lastRow < ${startRow} ? ${startRow} : lastRow + 1; invoiceSheet.getRange(firstEmptyRow, 1).setValue(itemCode); invoiceSheet.getRange(firstEmptyRow, 2).setValue(itemName); invoiceSheet.getRange(firstEmptyRow, 3).setValue(price); } catch (error) { Logger.log('Error in addItemTo${invoiceSheet.replace(/[^a-zA-Z0-9]/g, '')}: ' + error.toString()); throw error; } }`; document.getElementById('codeOutput').value = code; document.getElementById('outputSection').style.display = 'block'; document.getElementById('outputSection').scrollIntoView({ behavior: 'smooth' }); } function copyCode() { const codeOutput = document.getElementById('codeOutput'); const copyBtn = document.getElementById('copyBtn'); codeOutput.select(); codeOutput.setSelectionRange(0, 99999); document.execCommand('copy'); copyBtn.textContent = 'Copied!'; copyBtn.classList.add('copied'); setTimeout(() => { copyBtn.textContent = 'Copy Code'; copyBtn.classList.remove('copied'); }, 2000); } // Generate initial code on page load window.addEventListener('load', generateCode);

No comments:

Post a Comment