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

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

Pythonとスプレッドシートとの連携を発展させて、

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

別シートに転記することにチャレンジしてみました。

前提

Pythonとスプレッドシートの連携方法は以下の記事で解説しています。

環境

Mac 10.15.4

python 3.9

仮想環境:Poetry

シートを作成

Gmailのメルマガをスプレッドシートに転記して、

以下のスプレッドシートを作成しました。

今回は「楽天」の文字列を検索して、

シート1 → シート2 への転記を試してみます。

つまり、下線のあるB6のセルが転記できればOKということです。

GASの作成

スプレッドシートを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')

xxxxxxxxxxxxxxxxの部分には、独自のシート番号が入ります。

シート2を記述するときの注意点

スプレッドシート上のシート名はこんな感じです。

上記の場合は、sheet2を以下の記述で指定しています。

worksheet2 = sh.worksheet('sheet2')
注意
ちなみに、以下の記述ではエラーが返ってきます。シート1以外のシートを選択する場合は、使えないそうです。
worksheet2 = sh.sheet2

スプレッドシートの検索

シート1のB列から、「楽天」の文字列を検索します。

list_of_lists = worksheet1.col_values(2)
list_of_lists_in = [ s for s in list_of_lists if '楽天' in s]

部分解説

list_of_lists = worksheet1.col_values(2)

今回はB列なので、col_valuesの()の中に2を入れています。

(仮にA列なら1が入ります。)

このlist_of_list はリスト形式です。

このリストの中から、「楽天」の文字列を含むものだけを抽出していきます。

list_of_lists_in = [ s for s in list_of_lists if '楽天' in s]

別シートへの転記

シートへの転記の記述

for i in list_of_lists_in:
    worksheet2.update_cell(1,1, i)

部分解説

for i in list_of_lists_in:

リストをfor文で、取り出します。(今回は一つだけですが)

    worksheet2.update_cell(1,1, i)

リストは一つだけなので、

シート2の 1,1のセル=A1セル に転記をします。

実行結果

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

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

無事にシート2に転記をすることができました。

まとめ

今回は、Pythonとスプレッドシートの連携を活用術として、

「シート1から特定の文字列を検索して、そのセルをシート2へ転記する方法」

をご紹介しました。

今回は、「楽天」という文字列だけのリストを作成するのに、

なんと1ヶ月以上もかかってようやく解決ができました。。。

ぜひ参考にしてみてください。

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

コメントを残す

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

CAPTCHA