【Python】Googleスプレッドシートのワークシート名を指定後、指定セルに値を書き込む【JSON】 | ムノログ 合同会社ムジンケイカクプロのITノウハウブログ
Pythonと機械学習

【Python】Googleスプレッドシートのワークシート名を指定後、指定セルに値を書き込む【JSON】

python Pythonと機械学習

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")