LoginSignup
15
8

More than 5 years have passed since last update.

Google Spreadsheet の内容を Markdown Table に変換

Last updated at Posted at 2016-12-27

動作イメージ

Screen Shot 2016-12-28 at 17.36.03.png

Screen Shot 2016-12-28 at 17.36.19.png

| 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 に変更する必要があります。

15
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
8