0
0

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.

エクセルsheetを複数作成してくれるWebアプリを作ったよ(Python+Flask+GAE+Excel)

Last updated at Posted at 2022-10-01

エクセルsheetを複数作成してくれるWebアプリを作ったよ(Python+Flask+GAE+Excel)

出来たものがこちら

image.png

僕のような初学者が下記のようなプロセスで作成したという記録を書いていきたいと思います。

きっかけ

仕事で各ソースファイルごとに調査をする必要があり、エビデンスとしてエクセルを使用。
各ファイル名のシートを作成するため、そのようなファイルを作成してくれるものが欲しかった。
Flask,GCPにも興味はあったので触ってみたかった。

まず何をしたか

まずはFlaskで「Hello World」を表示ができるようにしました。
pythonファイルとhtmlファイルのみの構成でまずはSTEP1としました。

次にボタンを押したらとりあえずExcelファイルをダウンロードするように実装します。

こちらは「Flask Excel」と検索して出てきたサイトを参考にしました。
https://lightgauge.net/language/python/flask-excel-download

これが出来たら
textareaの改行をどのように処理されるのかの確認です。
改行がpythonに来る前に消されているかもしれないのでその確認を行います。

改行を含んでStringでやってきたのでsplitlines()で改行区切りのListに変えて、
それをfor文で回してシートの作成を行う。

この時点でダサいですが完成です。

あとはBootstrapに関して調べて連携、classごとにまとめてあるサイトからそれっぽいのを持ってきます。

これで完成です。

次にはGCPについて調べます。
アカウント作成など諸々を調べてデプロイして完成です。
requirements.txtとapp.yamlは作ります。

途中で躓いたエラーなど

ERROR: (gcloud.app.deploy) INVALID_ARGUMENT: The first service (module) you upload to a new application must be the 'default' service (module). Please upload a version of the 'default' service (module) before uploading a version for the 'production-service' service (module). See the documentation for more information. Python: (https://developers.google.com/appengine/docs/python/modules/#Python_Uploading%%20modules) Java: (https://developers.google.com/appengine/docs/java/modules/#Java_Uploading%%20modules)

こちらは
以下の記事に書いてありました。
https://qiita.com/ezaqiita/items/df24cdef6dee6d38509f

まずはdefaultとしてデプロイする必要があるそうです。
チュートリアルにあるHello wordをデプロイします。

Error: Server Error The server encountered an error and could not complete your request.

こちらは

app.yaml
entrypoint: gunicorn -b :$PORT home:app

を追加したらうまくいきました。
また「home」というのは「home.py」がmainファイルだからです。
「hello.py」なら「hello:app」にする必要があります。


requirements.txtの文字コードの変更と

gunicorn==20.1.0

を書くことです。
こちらは公式に書いてありました。
https://cloud.google.com/appengine/docs/flexible/python/runtime#application_startup


ダウンロードできない....
ローカルではできるのに...
ログを見たらこう書いてありました。

OSError: [Errno 30] Read-only file system:

こちらは
https://qiita.com/namkim/items/3edb9abe3871963bf0f7
が参考になりました。
クラウドだとあるあるのようです。
一度tmpフォルダを間にかますことでダウンロードできました。
これのせいでローカル環境では動かなくなりましたが、まぁいいでしょう。

# ワークブックをディスクに保存
    wb.save(r'/tmp/'+filename)

(中略)

 # ダウンロードするEXCELファイルを開く
    wb = open(r'/tmp/'+filename, "rb")

(中略)

# MIMEタイプをレスポンスに設定
    os.remove(r'/tmp/'+filename)

としました。

これから

フールプルーフ的な制御などなにもないので、これらについても考えたりしないといけませんねぇ...
説明文に何を書けば満足なのか、ヒントテキストはどうすれば良いのかなど自分にセンスがない部分は絶賛苦戦中です。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?