40
37

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【簡単DB】Steinで超絶簡単にgoogle spreadsheetをDB化してみよう!

Last updated at Posted at 2019-07-20
1 / 24

2023-10-14 追記

書いてから数年たっても、ちょこちょこ引用されるので内容更新しました。
基本的な内容は変わってないです。
言い回しとかデザインとか写真とかを変更しました。


はじめに。Steinって何?

皆さんこんにちは。
ふくしま はやと(@MasuraoProg)と申します。

さて、この度twitterにて
SteinというGooleSpreadSheetをそのままDB化できるシステムが
軽バズりしていました。
めっちゃ便利そうでしょ!


Stein利用のための準備


2-1 先にGoogleSpreadSheetへDBを作成

練習用に以下のように、GoogleSpreadSheetに記載しました。
[1行目にカラム名(項目名)]を記載してください。
このGoogleSpreadSheetのURLはあとで使うので、控えて置きましょう。

※なおアクセス制限の設定は不要です。すごいね!


スクリーンショット 2019-07-20 16.00.20.png

##2-2,Steinへ登録
まずはStein利用のために、登録が必要となります。

こちらから登録しましょう。
→ https://steinhq.com/


(1)サイトからここで登録
スクリーンショット 2019-07-18 9.42.04.png


新しいシートを作成
スクリーンショット 2023-10-14 21.44.07.png
※スプレッドシートのアクセス制限の設定は不要です。すごいね!


スクリーンショット 2023-10-14 21.47.45.png


gray.png

APIが発行されました!
API.png


#3,Stein利用方
APIがあれば、あとはコードを書くだけです。
例えば、下記のように記載してみてください。


※なお、コード内に
・GoogleSpreadSheetのURL
・GoogleSpreadSheetの、どのシートを利用するかを記載する部分があります。
忘れがちなので、お気をつけください。

index.html
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>test document</title>
</head>
<body>
<script src="https://unpkg.com/stein-js-client"></script>
<script>
  const store = new SteinStore(
    "https://api.steinhq.com/v1/storages/*********"
  );

  store.read("シートの名前", { limit: 100, offset: 0 }).then(data => {
      console.dir(data);
      console.log(" - - - - - - - - - - - ");
      for (let i = 0; i < data.length; i++) {
            const element = data[i];
            console.log("title:"+element.text);
      }
  });

</script>
</body>
</html>

上記コード内の下記部分の説明です。

index.html
  store.read("sheet1", { limit: 100, offset: 0 }).then(data => {
      console.dir(data);
      console.log(" - - - - - - - - - - - ");
      for (let i = 0; i < data.length; i++) {
            const element = data[i];
            console.log("title:"+element.text);
      }
  });

※store.readの第一引数には、GoogleSpreadSheetのシート名を入れてください。
記載されている説明は以下のとおりです。

パラメータ 説明 タイプ
limit 何行のデータを記載するか 数(整数)
offset 取得を開始する行数(デフォルトは0) 数(整数)

とりあえず、全部の行を最初から取得したいので、
limitは100(何行でもいいのですが、適当に大きな数字を入れました),
offsetは0
と記載しています。

今回"data"というArrayオブジェクトがあるので、for文などで表示したい項目を指定しています。


それでは、ブラウザのデベロッパーツールで確認してみましょう。
スクリーンショット 2019-07-21 1.02.26.png


画像の通り、Arrayオブジェクトで取得できていると思います。
かんたんでしょ?


#4,HTMLへの組み込み
Arrayオブジェクトとして取得できたので、このままJavaScriptをいじって、
HTMLと組み込んで、画面にデータを表示させることができます。
けど、もっと簡単な方法があります。


#4-1
htmlの</body>タグの前に以下のコードを追加してください。

index.html
<script src="https://unpkg.com/stein-expedite@0.0.1/dist/index.js"></script>

次に以下の通り記載してください。

1.適当な<div>要素を作成する
2.作成したAPI URLをそのdata-stein-url属性として設定してください。
3.htmlに、記載したいDBの項目を{{ }}で囲ってください。


例えばこんなイメージです。

index.html
<div data-stein-url="https://api.steinhq.com/v1/storages/*********/'sheet名'" data-stein-limit="100">
  <div>
    <h3>{{id}}、{{time}},{{title}}、{{text}}</h3>
  </div>
</div>

※data-stein-limitを記載することで、取得したい行の最大数を提示できます。


やったーできましたー
スクリーンショット 2019-07-21 1.24.17.png


このように、簡単にDBを作成・利用することができます。
もちろん、なれたSQLを利用するのも結構ですが、
GoogleSpreadSheetでサクッと利用できるこのSteinにも
様々な利点があるのではないでしょうか。

以上、ありがとうございました。

40
37
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
40
37

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?