【Python】スプレッドシートの文字列を検索して、(行ごと)別シートに転記(コピー)する方法②

python スプレッドシート 転記 手順

前回、Pythonとスプレッドシートとの連携をすることで、

①スプレッドシートの内容(特定の文字列)を検索して

②別シートに転記する

①→②の方法をご紹介しました。

しかし、特定のセルの転記だけではなく、

特定の行ごと別のシートに転記する方法が必要になったので、

作成してみました。

前回のおさらい

「楽天」の記載あるの、B6セルを検索して、

B6セル、ではなく、今回は6行目をまるっと、シート2にコピーをしていきます。

python スプレッドシート 転記 手順

↓スクリプトも、ここまでは変わりません。

import gspread
from oauth2client.service_account import ServiceAccountCredentials



scope = ["https://spreadsheets.google.com/feeds","https://www.googleapis.com/auth/spreadsheets","https://www.googleapis.com/auth/drive"]
creds = ServiceAccountCredentials.from_json_keyfile_name('client_secret.json',scope)
client = gspread.authorize(creds)

sh = client.open_by_key('xxxxxxxxxxxxxxxxxxxxxxxx')
worksheet1 = sh.sheet1
worksheet2 = sh.worksheet('sheet2')

リストからすべてを取り出す

list_of_lists = worksheet1.get_all_values()

部分解説

前回は、こんなコードを書きました。

list_of_lists = worksheet1.col_values(2)

でも、今回は行ごと転記をしたいため、

行ごとにリストを抽出します。

ので、以下に変更をしています。

worksheet1.col_values(2) → list_of_lists = worksheet1.get_all_values()


list_of_lists = worksheet1.get_all_values()

これで、シート上のすべてのデータが、行ごとにリスト化されて、

list_of_lists に入りました。

リストを確認して、行ごと転記する

for i in list_of_lists:
        if "楽天" in i[1] :
            worksheet2.append_row(i, table_range='A1')
        else:
            pass

部分解説

この場合、i はリスト単位で取り出されます。

ので、title情報が入っているのは、i[1]です。

(ちなみに、i[0]はdate情報)

もしもタイトルに「楽天」が含まれていた場合は、

シート2にappend_rowされます。(つまり、行ごとの転記です。)

実行結果

実際にPythonを実行してみます。

python スプレッドシート 転記 手順

行ごと、まるっとコピーができました!

まとめ

①の方よりも、実際にはかなり使用頻度が高いのではないでしょうか。

スプレッドシートから、必要な行を検索して、

ひとつずつコピーしていく作業がもしあれば、

一瞬で作業を終えることができますね!

検索ワードは、andで繋ぐことで複数選択もできます。

>>>【Python】スプレッドシートの文字列を検索して、別シートに転記(コピー)する方法①はこちら!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA