Google Colaboratoryでワークシート名を指定して書き込むことだけ紹介してあっても、このページの存在価値がない~利用価値がないと思うので、何に使っているかとその参考まで。
▼最終的に書き込みに関して調べた時に、非常にわかりやすかったページ
pandas.Dataframeからスプレッドシートに簡単に反映するgspread-dataframeライブラリ
■python+gspreadでシート名指定でA1セルに書き込み
!pip install --upgrade gspread import gspread # 一応バージョン確認 print(gspread.__version__) # 'colab_rakutenapi'というスプレッドシート名で指定したワークシート名でオープン worksheet = gc.open('colab_rakutenapi').worksheet('data') worksheet.update_acell('A1', '書き込み')
Googleスプレッドシートの何番目か?
例えばシートの1番目という指定方法はたくさん出てくるが、シート名で指定する方法が、ぽんと検索で出てこなかった。
多分、マニュアルがそうなっているから、翻訳して執筆するとそうなってしまうのかな?
シート名指定すると、誤ったシートに上書きしないから安心だと思うんです。
■python+gspreadで、シート名指定で、指定列全体に配列の値を書き込み
JSONのデータから、list_tagName というリストに、特定の値を格納しているところ。
list_tagName = list() for item in datas['tagGroups'][0]['tagGroup']['tags']: list_tagName.append(item['tag']['tagName'])
▼配列の要素数分、A列の長さの入れ物を準備する
cell_list = worksheet.range('A1:A'+str(len(list_tagName)))さ
▼ループ処理
A列の長さの入れ物回数分、ループぐるぐるする。
ループぐるぐるする時に、list_tagNameの中身の値を、cellの中に一個一個入れる。
for cell in cell_list: cell.value = list_tagName[cell_list.index(cell)]
cell.valueで内容が保持されている感覚がよくわからない。
…が、これでできたのでこういうものだろうという程度の理解で恐縮。
▼セルに実際に書き込む
シートもアップデートする。
worksheet.update_cells(cell_list)
■JSON用のメモ
JSONデータのループ回数の指定用に、予め要素の数を確認
# JSONデータのループ回数の指定用に、あらかじめ要素の数を確認している print(len(datas['tagGroups'][0]['tagGroup'])) # pandasのデータフレームを用意 df = pd.DataFrame() #作ったリストを指定列名のところに挿入する s = pd.Series(list) print(s) df['B']=s
RANGEを変数に入れてみて動くかテストした
test='A1:A' cell_list = worksheet.range(test+str(len(list_tagName))) for cell in cell_list: cell.value = list_tagName[cell_list.index(cell)] print(cell_list.index(cell)) print(cell.value) worksheet.update_cells(cell_list)
リストデータをワークシートに書き込む
自作関数の練習。
def sheet_make(cell_list,l): for cell in cell_list: cell.value = l[cell_list.index(cell)] worksheet.update_cells(cell_list)
JSON実例
‘colab_rakutenapi’というスプレッドシートで、指定したワークシート名でオープンしてから、ワークシートの値をpandasデータフレームへ。
worksheet = gc.open('colab_rakutenapi').worksheet('data') df = pd.DataFrame(worksheet.get_all_values())
楽天APIのURLエンコード
間違いを修正したもの。ヒント。
sort_condition = "+itemPrice".encode('utf-8') sort_conditions = urllib.parse.quote("+itemPrice")
当サイトはリンクフリーです。
ご自身のブログでの引用、TwitterやFacebook、Instagram、Pinterestなどで当サイトの記事URLを共有していただくのは、むしろありがたいことです。
事前連絡や事後の連絡も不要ですが、ご連絡いただければ弊社も貴社のコンテンツを紹介させていただく可能性がございます。