Skip to content

Instantly share code, notes, and snippets.

@01010111
Created April 4, 2018 15:48
Show Gist options
  • Save 01010111/46e767f3c557127d3fb809d83483b6f5 to your computer and use it in GitHub Desktop.
Save 01010111/46e767f3c557127d3fb809d83483b6f5 to your computer and use it in GitHub Desktop.
Google Scripts for Sheets!
function onOpen() { create_menu(); }
function create_menu() { SpreadsheetApp.getActiveSpreadsheet().addMenu("Export CSV", [{name: "Export this sheet as CSV", functionName: "export_csv"}]); }
function export_csv() { display_text(make_csv()); }
function make_csv()
{
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var data = sheet.getSheetValues(1, 1, sheet.getMaxRows(), sheet.getMaxColumns())
var text = '';
for (var j = 0; j < data.length; j++)
{
for (var i = 0; i < data[j].length; i++)
{
text += data[j][i];
text += (i < data[j].length - 1) ? ',' : '\n';
}
}
return text;
}
function display_text(text)
{
var app = UiApp.createApplication().setTitle('Exported CSV');
app.add(app.createTextArea().setWidth('100%').setHeight('88%').setId('csv').setName('csv'));
app.getElementById('csv').setText(text);
var ss = SpreadsheetApp.getActiveSpreadsheet();
ss.show(app);
return app;
}
function onOpen() { create_menu(); }
function create_menu() { SpreadsheetApp.getActiveSpreadsheet().addMenu("Export JSON", [{name: "Export this sheet as JSON", functionName: "export_json"}]); }
function export_json() { display_text(make_json()); }
function make_json()
{
var char_sep = '"';
var result = '';
var data = '';
var data_range = SpreadsheetApp.getActiveSheet().getDataRange();
var frozen_rows = SpreadsheetApp.getActiveSheet().getFrozenRows();
var data_array = data_range.getValues();
var name_range_array = data_array[frozen_rows - 1];
result += frozen_rows > 1 ? '{"' + data_array[frozen_rows - 2][0] + '": [' : '[\n';
for (var j = 0; j < data_range.getHeight() - frozen_rows; j++)
{
result += ' { ';
for (var i = 0; i < data_range.getWidth(); ++i)
{
data = data_array[j + frozen_rows][i];
data = (typeof data === "string" && data !== "") ? data.replace(/\n/g, "<br/>").replace(/\r/g, "<br/>").replace(/\t/g, "\\t") : data;
result += char_sep + name_range_array[i] + char_sep + ':'
result += char_sep + data + char_sep + ', ';
}
result = result.slice(0,-2);
result += ' },\n';
}
result = result.slice(0,-2);
result += frozen_rows > 1 ? ']}' : '\n]';
return result;
}
function display_text(text)
{
var app = UiApp.createApplication().setTitle('Exported JSON');
app.add(app.createTextArea().setWidth('100%').setHeight('88%').setId('json').setName('json'));
app.getElementById('json').setText(text);
var ss = SpreadsheetApp.getActiveSpreadsheet();
ss.show(app);
return app;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment