動作イメージ
| ID | 名前 | 個数 |
|:---:|:---:|:---:|
| 1 | りんご | 8 |
| 2 | バナナ | 274 |
| 3 | 全ての答え | 42 |
ID | 名前 | 個数 |
---|---|---|
1 | りんご | 8 |
2 | バナナ | 274 |
3 | 全ての答え | 42 |
コード
少し冗長な書き方をしていますが、メインは sheetToMarkdownTable()
のところです。
手抜きなので常に 1 行目をヘッダとして扱い、文字列は中央寄せ固定にしています。
function onOpen() {
SpreadsheetApp.getUi().createMenu('変換')
.addItem('シート -> Markdown Table', 'sheetToMarkdownTable')
.addToUi();
}
var ns = {};
(function() {
ns.sheets = {};
ns.sheets.data = {
instance: SpreadsheetApp.getActiveSpreadsheet().getSheetByName("data"),
ranges: {},
fn: {}
};
ns.app = {};
ns.app.fn = {};
})();
(function() {
ns.app.fn.sheetToMarkdownTable = function() {
var sheet = ns.sheets.data.instance;
var range = sheet.getRange(1, 1, sheet.getLastRow(), sheet.getLastColumn());
var values = range.getValues();
var outputs = [];
values.forEach(function(cols, index) {
if (index === 0) {
var header = '| ' + cols.join(' | ') + ' |';
outputs.push(header);
outputs.push(Array(cols.length + 1).join('|:---:') + '|');
return;
}
outputs.push('| ' + cols.join(' | ') + ' |');
});
Browser.msgBox(outputs.join('\\n'));
};
})();
function sheetToMarkdownTable() {
return ns.app.fn.sheetToMarkdownTable();
};
GAS 側でシート名を data と固定にしている都合上、シートの名前をシート1から data
に変更する必要があります。