ひゃまだのblog

ひゃまだ(id:hymd3a)の趣味のブログ

超ローテク、Googleスプレレッドシートの表をはてなブログに貼り付ける

(2021-12-28 初稿 - )

はじめに

筆者はスーパーカブ110に乗っていて、これまでの燃費を公開している。

上記のページを記述するときに使った方法が以下のとおり。

上のリンクの方法でもいいのだけど、ちょっと大げさで、給油のたびに元のGoogleスプレッドシートから貼り直さなくてはいけなくて面倒に感じてきた。今回も似たようなものだけど、単純なhtmlで変換するので多少の修正ははてなブログ内で可能。

そこで、超ローテクだがGoogleスプレッドシートからはてなブログの表に貼り付けるPythonスクリプトを作ったのでアップする。

一応、ネットで調べたら、csvやpandasライブラリを読み込んで○○というのが多かったけど、こっちは超ローテクなので高級なライブラリは使っていない。^^;

方法の概要

超ローテクだけに、手作業や決まりごとは多い。滝汗)

以下に、その方法の概要を示す。

  1. Googleスプレッドシートで表を作成し、CSVファイルとしてダウンロード
  2. CSVファイルをPythonスクリプトで変換
  3. 変換した表を、はてなブログに貼り付け

以下、具体的に記述する。

Googleスプレッドシートで表を作成し、CSVファイルとしてダウンロード

まずは、Googleスプレッドシートを作るのだけど、超ローテクだけに制限がある。

表はA列から始める必要がある。

(Google スプレッドシート)

表1のタイトル( Table Caption)
表1の項目(Table Header)
表1の中身
空白1行以上(表と表の区切り)
表2のタイトル
表2の項目(Table Header)
表2の中身

この形式で表を作れば、いくつでも表を作り、変換することができる。

すべての表が完成したら、Googleスプレッドシートのメニューの「ファイル」、「ダウンロード」、「カンマ区切り形式(.csv)」を選択してダウンロード。

Pythonスクリプトで変換

今回作成したスクリプトは以下のとおり。

超ローテクだけに、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編集」を選択。

表を貼り付けたいところに、コピペする。

おわりに

超ローテクで手抜きだけど、なんとか目的を果たせるスクリプトは作成できた。

どなたかの参考になれば幸いです。

関連ページ