Skip to content

Instantly share code, notes, and snippets.

@nacookan
Created May 24, 2013 16:14
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nacookan/5644601 to your computer and use it in GitHub Desktop.
Save nacookan/5644601 to your computer and use it in GitHub Desktop.
Google Apps Scriptで掲示板作ってみた
// data source
var book = SpreadsheetApp.openById('xxxxxxxx');
var sheet = book.getSheets()[0];
function doGet() {
var app = UiApp.createApplication();
app.add(app.createLabel('掲示板へようこそ'));
// form
var panel = app.createVerticalPanel().setStyleAttribute('border', 'solid 2px #000000');
panel.add(app.createLabel('件名'));
panel.add(app.createTextBox().setName('subject').setId('subject'));
panel.add(app.createLabel('名前'));
panel.add(app.createTextBox().setName('name').setId('name'));
panel.add(app.createLabel('本文'));
panel.add(app.createTextArea().setName('body').setId('body'));
panel.add(app.createButton('投稿')
.addClickHandler(app.createServerHandler('handle_click').addCallbackElement(panel))
);
app.add(panel);
// posts
var panel = app.createVerticalPanel().setId('posts');
app.add(panel);
gen_posts(app, panel);
return app;
}
function gen_posts(app, target){
target.clear();
var values = sheet.getRange(1, 1, sheet.getMaxRows(), 4).getValues().reverse();
for(var r = 0; r < values.length; r++){
if(values[r][0] == '') continue;
var panel = app.createVerticalPanel().setStyleAttribute('border', 'solid 1px #000000');
var date = Utilities.formatDate(values[r][0], "JST", "yyyy/MM/dd HH:mm:ss");
panel.add(app.createLabel('日時:' + date));
panel.add(app.createLabel('件名:' + values[r][1]));
panel.add(app.createLabel('名前:' + values[r][2]));
panel.add(app.createLabel('本文:' + values[r][3]));
target.add(panel);
}
}
function handle_click(e){
var app = UiApp.getActiveApplication();
// register
sheet.appendRow([
new Date(),
e.parameter.name,
e.parameter.subject,
e.parameter.body
]);
// reload
app.getElementById('subject').setValue('');
app.getElementById('name').setValue('');
app.getElementById('body').setValue('');
gen_posts(app, app.getElementById('posts'));
app.close();
return app;
}
@nacookan
Copy link
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment