(2021-12-28 初稿 - )
はじめに
筆者はスーパーカブ110に乗っていて、これまでの燃費を公開している。
上記のページを記述するときに使った方法が以下のとおり。
上のリンクの方法でもいいのだけど、ちょっと大げさで、給油のたびに元のGoogleスプレッドシートから貼り直さなくてはいけなくて面倒に感じてきた。今回も似たようなものだけど、単純なhtmlで変換するので多少の修正ははてなブログ内で可能。
そこで、超ローテクだがGoogleスプレッドシートからはてなブログの表に貼り付けるPythonのスクリプトを作ったのでアップする。
一応、ネットで調べたら、csvやpandasライブラリを読み込んで○○というのが多かったけど、こっちは超ローテクなので高級なライブラリは使っていない。^^;
方法の概要
超ローテクだけに、手作業や決まりごとは多い。滝汗)
以下に、その方法の概要を示す。
- Googleスプレッドシートで表を作成し、CSVファイルとしてダウンロード
- CSVファイルをPythonスクリプトで変換
- 変換した表を、はてなブログに貼り付け
以下、具体的に記述する。
まずは、Googleスプレッドシートを作るのだけど、超ローテクだけに制限がある。
表はA列から始める必要がある。
(Google スプレッドシート)
表1のタイトル( Table Caption)
表1の項目(Table Header)
表1の中身
空白1行以上(表と表の区切り)
表2のタイトル
表2の項目(Table Header)
表2の中身
この形式で表を作れば、いくつでも表を作り、変換することができる。
すべての表が完成したら、Googleスプレッドシートのメニューの「ファイル」、「ダウンロード」、「カンマ区切り形式(.csv)」を選択してダウンロード。
今回作成したスクリプトは以下のとおり。
超ローテクだけに、csvもpandasも読み込んでいない。^^;
#!/usr/bin/env python3
#coding: UTF-8
# cvs to hatena html
# ver0.01 written H.Yamada 2021-12-28
# ver0.02 2021-12-29 mod table判定
# ver0.03 2021-12-29 Commandline Arguments csv filename
import sys
#CsvFile = '/home/hoge/Downloads/Cub110燃費 - 燃費.csv'
Init_Style = """<style type="text/css">
.entry-content table{
display:table;
/>}
table caption { caption-side: top; }
</style>
"""
def prn_err():
print("csv-h_html.py csv_filename.csv")
def begin_table():
print('<table border="1">')
def end_table():
print('</tbody>')
print('</table>')
def prn_caption(caption):
print('<caption>', caption, '</caption>', sep='')
def prn_header(theader):
theader = theader.split(',')
print('<thead>')
print('<tr>', end='')
for item in theader:
print('<td align="center">', item, '</td>', sep='', end='')
print('</tr>')
print('</thead>')
print('<tbody>')
def prn_item(items):
items = items.split(',')
print('<tr>', end='')
for item in items:
print('<td align="right">', item, '</td>', sep='', end='')
print('</tr>')
# Commandline Arguments
if len(sys.argv) != 2:
prn_err()
sys.exit()
else:
CsvFile = sys.argv[1]
# Initial style
print(Init_Style)
cnt = 0
tbl = 0
with open(CsvFile) as f:
for line in f:
line = line.rstrip()
#print(line)
if line[:3] == ',,,':
if tbl == 0:
continue
else:
end_table()
print('<p></p>')
tbl = 0
cnt = 0
else:
if tbl == 0:
begin_table()
prn_caption(line.replace(',',''))
tbl = 1
else:
if cnt == 1:
prn_header(line.rstrip(','))
else:
prn_item(line.rstrip(','))
cnt += 1
end_table()
適当なエディタで入力後、ファイル名をcsv-h_html.py等として、実行権を与える。
$ chmod +x csv-h_html.py
実際の実行には、引数として上記でダウンロードした変換したいcsvファイルを指定する。
$ csv-h_html.py 変換したいファイル.csv
もし、ファイルで受けたい場合は、以下のようにリダイレクトして保存する。
$ csv-h_html.py 変換したいファイル.csv > 貼り付け元.html
変換した表を貼り付けたいはてなブログを開き、「HTML編集」を選択。
表を貼り付けたいところに、コピペする。
おわりに
超ローテクで手抜きだけど、なんとか目的を果たせるスクリプトは作成できた。
どなたかの参考になれば幸いです。
関連ページ