/**
* I defaults-variabeln kan du ändra vilket kalkylblad du vill jobba mot, och vilka
* färger som ska vara tillgängliga. Se [länk saknas] för en instruktion om hur
* det funkar.
* Det här och andra små Google-skript kan du hitta på https://github.com/Itangalo/googleScripties.
*/
var defaults = {
spreadsheetKey : '1csEJEaMMyejyf_CW6QygUVN2QaW2LADEsKj6m_8hfUs',
colors : ['#008000', '#00ff00', '#ffff00', '#ff9900', '#ff0000', '#ffffff'],
width : '100%'
};
// Script-as-app template.
function doGet() {
var app = UiApp.createApplication();
var spreadsheet = SpreadsheetApp.openById(defaults.spreadsheetKey);
var selectTab = app.createListBox().setName('selectTab').setStyleAttribute('fontSize', '200%');
var allTabs = spreadsheet.getSheets();
for (var i in allTabs) {
selectTab.addItem(allTabs[i].getName(), allTabs[i].getName());
}
app.add(app.createLabel('Byt flik: '));
app.add(selectTab);
var showTabContentHandler = app.createServerHandler('showTabContent');
selectTab.addChangeHandler(showTabContentHandler);
app.add(app.createLabel('Färglägg kalkylblad: '));
app.add(app.createSimplePanel().setId('tabContentContainer'));
var eventInfo = {
parameter : {
selectTab : allTabs[Object.keys(allTabs)[0]].getName()
}
};
showTabContent(eventInfo);
var colorPicker = app.createGrid(1, defaults.colors.length).setBorderWidth(1).setWidth(defaults.width).setStyleAttribute('textAlign', 'center');
var selectColorHandler = app.createServerHandler('selectColor');
for (var i in defaults.colors) {
colorPicker.setWidget(0, parseInt(i), app.createLabel('välj').setId('color-' + i).addClickHandler(selectColorHandler).setStyleAttribute('fontSize', '200%'));
colorPicker.setStyleAttribute(0, parseInt(i), 'background', defaults.colors[i]);
}
app.add(app.createHTML('
'));
app.add(app.createLabel('Välj färg:'));
app.add(colorPicker);
selectColor();
return app;
}
function selectColor(eventInfo) {
var app = UiApp.getActiveApplication();
var previousColorIndex = defaults.colors.indexOf(getSelectedColor());
if (eventInfo == undefined) {
app.getElementById('color-' + previousColorIndex).setStyleAttribute('fontWeight', 'bold').setText('vald');
return app;
}
app.getElementById('color-' + previousColorIndex).setStyleAttribute('fontWeight', 'normal').setText('välj');
var selectedColor = app.getElementById('selectedColor');
var color = defaults.colors[eventInfo.parameter.source.split('-')[1]];
PropertiesService.getUserProperties().setProperty('spreadsheetColor', color);
app.getElementById(eventInfo.parameter.source).setStyleAttribute('fontWeight', 'bold').setText('vald');
return app;
}
function getSelectedColor() {
return PropertiesService.getUserProperties().getProperty('spreadsheetColor') || defaults.colors[0];
}
function showTabContent(eventInfo) {
var spreadsheet = SpreadsheetApp.openById(defaults.spreadsheetKey);
var sheet = spreadsheet.getSheetByName(eventInfo.parameter.selectTab);
var lastRow = sheet.getLastRow();
var lastColumn = sheet.getLastColumn();
var app = UiApp.getActiveApplication();
var changeColor = app.createServerHandler('changeColor');
var table = app.createGrid(lastRow, lastColumn).setBorderWidth(2).setCellPadding(5).setId('tabContent').setWidth(defaults.width).setStyleAttribute('textAlign', 'center');;
var cells = sheet.getRange(1, 1, lastRow, lastColumn);
var backgrounds = cells.getBackgrounds();
var values = cells.getValues();
for (var row in values) {
for (var column in values[row]) {
table.setWidget(parseInt(row), parseInt(column), app.createLabel(values[row][column]).setId('cell-' + row + '-' + column + '-' + eventInfo.parameter.selectTab).addClickHandler(changeColor).setWidth('100%'));
table.setStyleAttribute(parseInt(row), parseInt(column), 'background', backgrounds[row][column]);
}
}
app.getElementById('tabContentContainer').clear().add(table);
return app;
}
function changeColor(eventInfo) {
Logger.log(eventInfo.parameter.source);
var tab = eventInfo.parameter.source.split('-')[3];
var row = parseInt(eventInfo.parameter.source.split('-')[1]);
var column = parseInt(eventInfo.parameter.source.split('-')[2]);
var color = getSelectedColor();
var sheet = SpreadsheetApp.openById(defaults.spreadsheetKey).getSheetByName(tab);
sheet.getRange(row + 1, column + 1).setBackground(color);
var app = UiApp.getActiveApplication();
app.getElementById('tabContent').setStyleAttribute(row, column, 'background', color);
return app;
}