GASのスプレットシート読み込みをjavascriptで置き換えたい

GASアプリを作ってる時によくspreadsheetを読む実装をすると思います
例えば以下のような関数を.gs側生やして、

main.gs
1
2
3
4
function getCSVData()
{
return SpreadsheetApp.openById(SPREAD_ID).getSheetByName(SHEET_NAME).getRange("A2:M").getValues();
}

.js側で以下の感じで使う。みたいな

script.gs
1
2
3

google.script.run.withSuccessHandler(OnParseCSVData).withFailureHandler(OnParseFailed).getCSVData();

これを全部js実装に置き換えてwebアプリで動くようにします

CSVデータの配置

これはもうシンプルに.csvデータをダウンロードして適切な位置に配置します
該当のspreadsheetを開いて以下の方法でダウンロードします

1
ファイル -> ダウンロード -> カンマ区切り形式(.CSV)

本サイトはHexoで実装しているので以下のような位置に配置しておきます

1
2
3
4
5
// ローカルアセット
ブログルートフォルダ\source\_posts\記事のフォルダ\data.csv

// グローバルアセット
ブログルートフォルダ\source\data\data.csv

アセットの配置については以下の記事をご覧ください

Hexoの記事に画像埋め込む方法

js側の実装

jquery-csvを使います

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// jquery-csv
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-csv/1.0.21/jquery.csv.min.js"></script>

// 実装
function readCSVData(filePath, successCallback, failCallback)
{
$.get( filePath, function(data) {
var csv = $.csv.toArrays(data, { separator:',', delimiter:'\n' });
// 先頭行は不要なので破棄
csv.shift();
successCallback(csv);
}, 'text')
.done(function() {
//alert( "second success" );
})
.fail(function() {
//alert( "error" );
failCallback();
})
.always(function() {
//alert( "finished" );
});
}

// 呼び出し側
readCSVData('/data/data.csv', OnParseCSVData, OnParseFailed);

コールバックは適宜必要な部分を有効化してください

非同期処理が必要な場合はasyncも使えます