回答編集履歴

1

追記

2020/10/21 06:51

投稿

nto
nto

スコア1438

test CHANGED
@@ -35,3 +35,109 @@
35
35
  set_with_dataframe(wks, df, include_column_header=False)
36
36
 
37
37
  ```
38
+
39
+
40
+
41
+
42
+
43
+ ### 追記
44
+
45
+ 今回使用されるCSVのデータがどの様なデータなのかわからなかった為
46
+
47
+ 恐らくは3列100行分のデータであると仮定して仮のデータを作成して掲示しておりますが
48
+
49
+ CSVファイルを使用する場合には、以下の形にご自身で整形して頂く必要があります。
50
+
51
+ `[[1列目1行目, 2列目1行目, 3列目1行目], [1列目2行目, 2列目2行目, 3列目2行目], [..], ...]
52
+
53
+ `
54
+
55
+
56
+
57
+ そしたらfor文で1行ずつ処理を行っていきます。
58
+
59
+ 何行目から開始し、現在何行目かをカウントする為の変数を用意します。(以下ではcolumと定義)
60
+
61
+ 1行ずつ処理を行っていき、指定のセルにデータを1件ずつ挿入していきます。
62
+
63
+ また、API側でリクエストを送る(データの挿入等の事)回数に上限が設定されています。
64
+
65
+
66
+
67
+ - 100秒あたりに100件まで
68
+
69
+ - 1回の実行で可能な最大値は1000件まで
70
+
71
+ - 1秒10件まで
72
+
73
+
74
+
75
+ 従って、上限に達しない様に実行速度を調整してあげながら追加する必要があります。
76
+
77
+ 今回300件のデータがある為、300秒以上の時間をかけて追加する必要があります。
78
+
79
+ 従って3件(1行分)追加したらtime.sleep(3)で3秒休み...という流れで100行分のデータを処理していきます。
80
+
81
+ ```python
82
+
83
+ import gspread
84
+
85
+ from oauth2client.service_account import ServiceAccountCredentials
86
+
87
+ from gspread_dataframe import get_as_dataframe, set_with_dataframe
88
+
89
+ import pandas as pd
90
+
91
+ import numpy as np
92
+
93
+ import time
94
+
95
+
96
+
97
+ scope = ['https://spreadsheets.google.com/feeds',
98
+
99
+ 'https://www.googleapis.com/auth/drive']
100
+
101
+ credentials = ServiceAccountCredentials.from_json_keyfile_name('jsonファイル名', scope)
102
+
103
+ gc = gspread.authorize(credentials)
104
+
105
+ SPREADSHEET_KEY = 'スプレッドシートキー'
106
+
107
+ # スプレッドシートの指定
108
+
109
+ wks = gc.open_by_key(SPREADSHEET_KEY).sheet1
110
+
111
+
112
+
113
+ # 3列100行分の仮のデータ
114
+
115
+ data = [['{}{:05d}'.format(n, i) for i in range(1, 101)] for n in range(1,4)]
116
+
117
+ data = np.array(data).T # 転置
118
+
119
+
120
+
121
+ colum = 5 # 5行目から開始する為
122
+
123
+ # 各行ずつB列C列D列の何行目かをformat(colum)で指定してデータを挿入
124
+
125
+ for row in data:
126
+
127
+ B, C, D = row
128
+
129
+ wks.update_acell('B{}'.format(colum), B)
130
+
131
+ wks.update_acell('C{}'.format(colum), C)
132
+
133
+ wks.update_acell('D{}'.format(colum), D)
134
+
135
+
136
+
137
+ colum += 1
138
+
139
+ time.sleep(3)
140
+
141
+ ```
142
+
143
+ ※解説としてわかりやすい様に余計な代入や省略できる部分を省略せずに記載しております。