
Google ColabでSpreadsheetやCSVを操作したいと思った時に使えるスニペット
最近、Google Colabを使う機会が増えてきました。
自分がよく使うコードをスニペットとしてまとめました。
順次、追加していきます。
ライブラリの読み込み
# Google Colabの認証を付与する
from google.colab import userdata
from google.colab import auth
auth.authenticate_user()
# Google Spreadsheetとの連携
import gspread
from google.auth import default
creds, _ = default()
gc = gspread.authorize(creds)
Spreadsheet内の全てのシート名を取得
def main():
# GoogleスプレッドシートのURL
sheet_url = "https://docs.google.com/spreadsheets/d/*******"
spreadsheet = gc.open_by_url(sheet_url)
# シート名の一覧を取得する
sheet_names = [sheet.title for sheet in spreadsheet.worksheets()]
print(f"sheet_name: {sheet_names}")
if __name__ == "__main__":
main()
シート内の値を2次元配列で取得する
def main():
# GoogleスプレッドシートのURL
sheet_url = "https://docs.google.com/spreadsheets/d/*************"
spreadsheet = gc.open_by_url(sheet_url)
# 2次元配列に変換
original = spreadsheet.get_worksheet(0).get_all_records()
values = [list(row.values()) for row in original]
print(values)
if __name__ == "__main__":
main()
シートのIDと照合して最新のシート名を取得する
def extract_sheet_id(url):
"""
指定されたGoogle SpreadsheetのURLから gid(シートID)を抽出します。
Args:
url (str): Google SpreadsheetのURL。
Returns:
int or None: 抽出されたシートID(整数)。見つからない場合は None。
"""
match = re.search(r"gid=(\d+)", url)
return int(match.group(1)) if match else None # 整数型に変換
def main():
# GoogleスプレッドシートのURL
sheet_url = "https://docs.google.com/spreadsheets/d/**************"
spreadsheet = gc.open_by_url(sheet_url)
# URLから `gid` を取得(整数型に変換)
target_sheet_id = extract_sheet_id(sheet_url)
sheet_name = None
# シートの一覧を取得し、`gid` に該当するシートを探す
for sheet in spreadsheet.worksheets():
if sheet.id == target_sheet_id:
sheet_name = sheet.title
break # 見つかったらループを抜ける
おまけ:CSV編:CSVを読み込み
pandasというライブラリが必要
def load_csv(csv_path):
"""CSVファイルを読み込み、DataFrameを返す。"""
try:
df = pd.read_csv(csv_path)
return df
except FileNotFoundError:
print(f"エラー: ファイル {csv_path} が見つかりません。")
return None
おまけ:CSV編:必要な列のみ読み込む
columns = [
"ID",
"名前",
"部署"
]
def select_columns(df, columns):
"""
DataFrameから指定された列を抽出する。
Parameters
- df : pandas.DataFrame
元のDataFrame。
- columns : list of str
抽出する列名のリスト。
Returns
- pandas.DataFrame or None
"""
try:
df_selected = df[columns]
print(df_selected)
return df_selected
except KeyError:
print("エラー: 指定された列名が存在しません。")
return None
おまけ:CSV編:条件を満たす行のみを取得
# 応募者名と選考ステップでDataFrameを取捨選択する
query = f"名前 == '{applicant_name}' and 部署 == '営業部'"
filter = filter_by_query(selected_df, query)
def filter_by_query(df, query):
"""
DataFrameを指定されたqueryでフィルタリングする関数
Args:
df (pd.DataFrame): フィルタリング対象のDataFrame
query (str): フィルタリング条件
Returns:
pd.DataFrame: フィルタリングされたDataFrame
"""
filter = df.query(query)
print(filter)
return filter