RaspberryPi 3 Model B+からGoogleスプレッドシートへアクセスする方法 | そう備忘録

RaspberryPi 3 Model B+からGoogleスプレッドシートへアクセスする方法

souichirou

やった事を忘れない為の備忘録 同じような事をやりたい人の参考になればと思ってブログにしてます。 主にレゴ、AWS(Amazon Web Services)、WordPress、RaspberryPiに関するブログを書いています。 2019年7月にJDLA(一般社団法人 日本デイープラーニング協会)Deep Learning for GENERALに合格しました。 質問は記事一番下にあるコメントか質問フォーラムにお願いします。 このブログを見てサーバーの立ち上げ、ホームページの製作や運用などお仕事を依頼したいと思われた方はメニューの「問い合わせ」にお願いします。

おすすめ

8件のフィードバック

  1. より:

    まさしくやってみたい事だと思い試した結果、以下のエラーがでました。
    宜しければアドバイス頂けますと幸いです。

    python test.pyを実行した結果

    Traceback (most recent call last):
    File “test.py”, line 3, in
    import gspread
    File “/home/pi/gspread.py”, line 10, in
    gc = gspread.authorize(credentials)
    NameError: name ‘gspread’ is not defined

    • souichirou より:

      ゆ さんこんにちは

      gspreadがプログラムから見れない状態だと思います。
      記事中の

      のコマンドは正常に終了しましたか。
      またはインストールした時のアカウントと実行時のアカウントが異なっている事はありませんか?

      でgspreadのインストール場所が分かります。
      もし正しくインストールされていてpathが通っていないだけであれば、プログラムソース中に

      を指定してみてください

      結果を教えて貰えるとありがたいです。

      • より:

        丁寧にご返答頂きありがとうございます。

        :~ $ pip show gspread
        WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip.
        Please see https://github.com/pypa/pip/issues/5599 for advice on fixing the underlying issue.
        To avoid this problem you can invoke Python with ‘-m pip’ instead of running pip directly.
        DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. pip 21.0 will drop support for Python 2.7 in January 2021. More details about Python 2 support in pip, can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support
        Name: gspread
        Version: 3.6.0
        Summary: Google Spreadsheets Python API
        Home-page: https://github.com/burnash/gspread
        Author: Anton Burnashev
        Author-email: fuss.here@gmail.com
        License: MIT
        Location: /home/pi/.local/lib/python2.7/site-packages
        Requires: google-auth-oauthlib, requests, google-auth
        Required-by:

        と出たので、ソースを以下のようにしました。

        #!/usr/bin/env python
        # -*- coding: utf-8 -*-
        import sys
        sys.path.append(‘/home/pi/.local/lib/python2.7/site-packages’)

        import json
        from oauth2client.service_account import ServiceAccountCredentials
        scope = [‘https://www.googleapis.com/auth/drive’]

        credentials = ServiceAccountCredentials.from_json_keyfile_name(‘./python.json’, scope)
        gc = gspread.authorize(credentials)

        worksheet = gc.open(“シート1”).sheet1

        worksheet.update_cell(1,1, ‘Hello World’)

        結果は、以下でした。

        :~ $ python gs.py
        Traceback (most recent call last):
        File “gs.py”, line 12, in
        gc = gspread.authorize(credentials)
        NameError: name ‘gspread’ is not defined

        初心者なもので不明なことだらけです。
        ご教示頂けますと助かります。

        • souichirou より:

          ゆ さん
          こんにちは。
          pip show gspreadの結果を見るとpython2.7にインストールされていて警告が出ていますね。
          ※2.7は2020年1月1にサポートが終了しています。

          元の記事中に

          尚、事前にPythonのデフォルトをPython3にしてある。
          変更方法については以前の記事を参照。(https://www.souichi.club/raspberrypi/aws-iot-01/#DefaltPython3)

          とありますがこの手順を抜かしたのだと思います。
          PythonのデフォルトをPython3に変更した上でインストールするとPython3の環境にgspreadがインストールされます。

          今、2.7にインストールされていますので、
          1.アンインストール
          2.上記記事を元にデフォルトを3.0に変更
          3.再度インストール
          を試して見て下さい。

          P.S. 元記事は分かりにくかったので追記を入れました

  2. より:

    アンインストールでおかしなことになったりしてしまい、OS自体を入れなおして0からやりましたが、症状は変わりませんでした。
    何の設定?がおかしいのか分からない状態です。。。すみません。

    :~ $ python gs.py
    Traceback (most recent call last):
    File “gs.py”, line 10, in
    gc = gspread.authorize(credentials)
    NameError: name ‘gspread’ is not defined

    :/usr/bin $ ls -l

    lrwxrwxrwx 1 root root 7 6? 6 03:18 python -> python3
    lrwxrwxrwx 1 root root 14 3? 5 2019 python-config -> python2-config
    lrwxrwxrwx 1 root root 9 3? 5 2019 python2 -> python2.7
    lrwxrwxrwx 1 root root 16 3? 5 2019 python2-config -> python2.7-config
    -rwxr-xr-x 1 root root 154 12? 30 2018 python2-pbr
    -rwxr-xr-x 1 root root 2984816 10? 11 2019 python2.7
    lrwxrwxrwx 1 root root 36 10? 11 2019 python2.7-config -> arm-linux-gnueabihf-python2.7-config
    lrwxrwxrwx 1 root root 9 3? 26 2019 python3 -> python3.7
    lrwxrwxrwx 1 root root 16 3? 26 2019 python3-config -> python3.7-config
    -rwxr-xr-x 2 root root 4275580 12? 21 03:57 python3.7
    lrwxrwxrwx 1 root root 36 12? 21 03:57 python3.7-config -> arm-linux-gnueabihf-python3.7-config
    -rwxr-xr-x 2 root root 4275580 12? 21 03:57 python3.7m
    lrwxrwxrwx 1 root root 37 12? 21 03:57 python3.7m-config -> arm-linux-gnueabihf-python3.7m-config
    lrwxrwxrwx 1 root root 10 3? 26 2019 python3m -> python3.7m
    lrwxrwxrwx 1 root root 17 3? 26 2019 python3m-config -> python3.7m-config
    lrwxrwxrwx 1 root root 10 3? 26 2019 pyvenv -> pyvenv-3.7
    -rwxr-xr-x 1 root root 436 12? 21 03:57 pyvenv-3.7
    lrwxrwxrwx 1 root root 29 3? 5 2019 pyversions -> ../share/python/pyversions.py

    :~ $ python –version
    Python 3.7.3

    :~ $ pip show gspread
    Name: gspread
    Version: 3.6.0
    Summary: Google Spreadsheets Python API
    Home-page: https://github.com/burnash/gspread
    Author: Anton Burnashev
    Author-email: fuss.here@gmail.com
    License: MIT
    Location: /usr/local/lib/python3.7/dist-packages
    Requires: requests, google-auth-oauthlib, google-auth
    Required-by:

    と出たので、ソースを以下のようにしています。

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    import sys
    sys.path.append(‘/usr/local/lib/python3.7/dist-packages’)

    import json
    from oauth2client.service_account import ServiceAccountCredentials
    scope = [‘https://spreadsheets.google.com/feeds’,’https://www.googleapis.com/auth/drive’]

    #
    credentials = ServiceAccountCredentials.from_json_keyfile_name(‘./python.json’, scope)
    gc = gspread.authorize(credentials)

    #
    worksheet = gc.open(“シート1”).sheet1

    #
    worksheet.update_cell(1,1, ‘Hello World’)

    • souichirou より:

      ゆ さん
      おはようございます。

      ソース中に、
      import gspread
        ↑
      gspreadモジュールの読み込み
      が無いようです。

      ですので
      gc = gspread.authorize(credentials)
      でgspreadを使おうとして、「gspreadがありません」のエラーになっていると思います。

      P.S. Pythonのデフォルトは3.7になっていて、その環境にgspreadがインストールされているようです。

  3. より:

    アンインストール、インストールを丁寧にやり直したら無事できました。
    ありがとうございます。お騒がせしました。
    大変参考になりました。
    今後も引き続き参考にさせてもらいます。応援しています☆

質問やコメントや励ましの言葉などを残す

メールアドレスが公開されることはありません。