Simone was finding value in my Google Sheets SDR Touch Exporter plugin, but had a suggested improvement. Could I make it so that all sheets in the document are exported, not just the first?
I can, and I did. Check out version 2 of my code in this sample document. And below is the complete source code for the plugin.
I have to say, it was a real treat learning my little script was helping someone!
function onOpen() { var spreadsheet = SpreadsheetApp.getActive(); var menuItems = [ {name: 'Export Frequencies', functionName: 'sdrFreqExport'} ]; spreadsheet.addMenu('SDR Tools', menuItems); } function sdrFreqExportSheet(sheet) { // This represents ALL the data var name = sheet.getName(); var range = sheet.getDataRange(); var values = range.getValues(); var doc = ['<category id="1" name="' + name + '">']; for (var i = 2; i < values.length; i++) { doc.push(' <preset id="' + i + '" ' + ' name="' + values[i][2] + '" ' + ' freq="' + rawFreq(values[i][1]) + '" ' + ' centfreq="' + rawFreq(values[i][1]) + '" ' + ' offset="0" ' + ' order="' + i + '" ' + ' filter="13686" dem="0"/>'); } doc.push(' </category>'); return doc.join("\n"); } function sdrFreqExport() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var doc = ['<?xml version="1.0" encoding="UTF-8"?>', '<sdr_presets version="1">']; for(var i = 0; i < ss.getSheets().length; i++) { doc.push(sdrFreqExportSheet(ss.getSheets()[i])); } doc.push('</sdr_presets>'); showDoc(doc.join("\n")); } function rawFreq(freq, band) { return freq * 1000000; } function showDoc(doc) { var src = "<pre><![CDATA[" + doc + "]]></pre>"; var html = HtmlService.createHtmlOutput(src) .setWidth(400) .setHeight(300); SpreadsheetApp.getUi() .showModalDialog(html, 'SDR Export'); }
No comments:
Post a Comment