現在のコード
Python
1 2# coding: utf-8 3# !/usr/bin/env python3 4from selenium import webdriver 5from selenium.webdriver.support.ui import Select 6from time import sleep 7import sys 8import os 9import pandas as pd 10import ssl 11import math 12from selenium.webdriver.common.action_chains import ActionChains 13from dateutil.relativedelta import relativedelta 14from datetime import datetime, date, timedelta 15import datetime 16from selenium.webdriver.common.keys import Keys 17import gspread 18import oauth2client.client 19import json 20import glob 21import shutil 22from oauth2client.service_account import ServiceAccountCredentials 23 24 25df_concat #予め貼り付けたい形に修正しておいたもの 26 27#セル列の最大値を求める。 28COLMAX=len(df_concat.columns) 29#セル行の最大値を求める。※1行目はタイトルなので、+1してあげる。 30ROWMAX = len(df_concat.index)+1 31 32update_sheet = wb.worksheet(write_sheet_name) 33#カラム名を取得する。 34c_list=list(df_concat.columns.values) 35#列を移動するためのリスト ※必要な分だけ作成 36col =('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z') 37cc = 0 38# 更新範囲指定。A2:A100 のような文字列をつくる 39for cc in range(COLMAX): 40 data_range = col[0+cc] + "2:" + col[0+cc] + str(ROWMAX) 41 print(data_range) 42 cell_list = update_sheet.range(data_range) 43 for (i,cell) in enumerate(cell_list): 44 cell.value = str(df_concat[c_list[0+cc]][i]) 45 update_sheet.update_cells(cell_list) 46 cc=cc+1 47update_sheet.update_cells(cell_list) 48sleep(3)
課題
上記コードの場合
1)1列目を変数に代入
2)1列目をスプレッドの指定の列に貼付け
3)反映(※update_sheet.update_cells(cell_list))
以下繰り返し
という処理のため、1列ずつ貼り付けて更新という形になっており時間を要してしまっています。
これをなんとかして一括で貼り付けられるようにしたいのですが、GoogleAPIの情報がまだ出揃っていないせいか
方法が見つからず壁にぶつかってしまいました。。。
ループ処理後にupdate_cellsの処理をした場合、最終列のみ貼り付けられて終わります。
皆様のお知恵をお貸しいただいたら嬉しいです。
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー