質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

2834閲覧

python3_gspread シート内でセルの内容を取得し別セルへ出力する方法について

beginner.py

総合スコア8

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/06/15 00:56

こんにちは、閲覧いただきまして、ありがとうございます。

pythonでスプレッドシートを使う際の疑問についてご質問させてください。

例えば、スプレッドシートの"タブA"範囲(C2:F5)のデータを取得したとして、

果物販売数単価売上
バナナ43001200
メロン3200600
いちご85004000

別の"タブB"の(I9:L12)に出力する方法がわからず、、、質問させていただきました。

試したコード

python

1# coding:utf-8 2from selenium import webdriver 3from selenium.webdriver.common.keys import Keys 4from bs4 import BeautifulSoup 5import gspread 6import json 7from gspread.exceptions import * 8#ServiceAccountCredentials:Googleの各サービスへアクセスできるservice変数を生成します。 9from oauth2client.service_account import ServiceAccountCredentials 10 11 12#----------------------------------------------------------------------------------------------------------------------# 13#スプレッドシートで基本設定 14#----------------------------------------------------------------------------------------------------------------------# 15 16#基本設定 17#2つのAPIを記述しないとリフレッシュトークンを3600秒毎に発行しなくてもよくなる 18scope = ['https://spreadsheets.google.com/feeds','https://www.googleapis.com/auth/drive'] 19 20#認証情報設定 21#ダウンロードしたjsonファイル名をクレデンシャル変数に設定(秘密鍵、Pythonファイルから読み込みしやすい位置に置く) 22credentials = ServiceAccountCredentials.from_json_keyfile_name(r'C:\Users\xxx\xxx\xxx\python.json', scope) 23 24#OAuth2の資格情報を使用してGoogle APIにログインします。 25gc = gspread.authorize(credentials) 26 27#共有設定したスプレッドシートキーを変数[SPREADSHEET_KEY]に格納する。 28SPREADSHEET_KEY = 'xxxxxxxxxxxxxxxxxxxxxxx' 29 30#----------------------------------------------------------------------------------------------------------------------# 31#スプレッドシートの取得+出力範囲設定 32#----------------------------------------------------------------------------------------------------------------------# 33 34#共有設定したスプレッドシートのシートを開く 35ws1 = gc.open_by_key(SPREADSHEET_KEY).worksheet('テスト') 36ws2 = gc.open_by_key(SPREADSHEET_KEY).worksheet('テスト2') 37 38#読み込むセル範囲 39cell_range1 = ws1.range('C2:F5') 40 41#出力先 42cell_range2 = ws2.range('I9:L12') 43 44#----------------------------------------------------------------------------------------------------------------------# 45#別シートへデータ出力 46#----------------------------------------------------------------------------------------------------------------------# 47 48for cell in cell_range2: 49 cell.value = cell_range1 50ws2.update_cells(cell_range2) 51

エラー内容

Object of type Cell is not JSON serializable

例えば、cell.valueの値をcell_range1ではなく1に変更すると
正しく出力されるので、cell.valueの値がまちがっているのではないかと考えておりますが、何がちがうのかわからず
ご教授いただけると幸いです。

python

1for cell in cell_range2: 2 cell.value = 1 3ws2.update_cells(cell_range2)

大変お忙しいところ恐縮ですが、ご回答いただけると幸いでございます。
どうぞ、よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

手元に環境がないので動作確認してませんが、代入する値がrangeではおかしいのではないでしょうか。たとえば下記のように、range1から値を一個ずつとってきて代入してあげてはいかがでしょう。

python3

1for cell1, cell2 in zip(cell_range1, cell_range2): 2 cell2.value = cell1.value

投稿2020/06/15 01:24

jeanbiego

総合スコア3966

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

beginner.py

2020/06/15 01:41

jeanbiego様 お忙しい中、ご回答いただき、ありがとうございました。 いただいたコードでうまくいきました 今回いただいたコードの意味をしっかり理解しながら今後につなげていきたいと思います。 本当に助かりました。 ありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問