- gspreadモジュールを使用する方法:
gspreadは、PythonからGoogle Sheetsにアクセスするためのモジュールです。以下のコードは、指定したシートのセルの数式を取得し、別のセルにコピーする例です。
import gspread
from oauth2client.service_account import ServiceAccountCredentials
# 認証情報の設定
scope = ['https://spreadsheets.google.com/feeds', 'https://www.googleapis.com/auth/drive']
credentials = ServiceAccountCredentials.from_json_keyfile_name('credentials.json', scope)
client = gspread.authorize(credentials)
# スプレッドシートを開く
sheet = client.open('スプレッドシート名').sheet1
# セルの数式をコピーする
source_formula = sheet.acell('A1').formula
sheet.update_acell('B1', source_formula)
- Google Sheets APIを使用する方法:
Google Sheets APIを使用することで、より高度な操作が可能です。以下のコードは、Google Sheets APIを使用してセルの数式をコピーする例です。
import httplib2
from apiclient.discovery import build
from apiclient import discovery
from oauth2client.service_account import ServiceAccountCredentials
# 認証情報の設定
credentials = ServiceAccountCredentials.from_json_keyfile_name('credentials.json')
http = credentials.authorize(httplib2.Http())
service = discovery.build('sheets', 'v4', http=http)
# スプレッドシートIDと範囲を指定
spreadsheet_id = 'スプレッドシートID'
source_range = 'Sheet1!A1'
destination_range = 'Sheet1!B1'
# セルの数式をコピーするリクエストの作成
request = {
'copyPaste': {
'source': {
'sheetId': 0,
'startRowIndex': int(source_range.split('!')[1].split(':')[0][1:]),
'endRowIndex': int(source_range.split('!')[1].split(':')[1]),
'startColumnIndex': ord(source_range.split('!')[1].split(':')[0][0]) - 65,
'endColumnIndex': ord(source_range.split('!')[1].split(':')[1][0]) - 65 + 1
},
'destination': {
'sheetId': 0,
'startRowIndex': int(destination_range.split('!')[1].split(':')[0][1:]),
'endRowIndex': int(destination_range.split('!')[1].split(':')[1]),
'startColumnIndex': ord(destination_range.split('!')[1].split(':')[0][0]) - 65,
'endColumnIndex': ord(destination_range.split('!')[1].split(':')[1][0]) - 65 + 1
},
'pasteType': 'PASTE_FORMULA'
}
}
# リクエストの送信
response = service.spreadsheets().batchUpdate(
spreadsheetId=spreadsheet_id,
body={'requests': [request]}
).execute()
print('数式がコピーされました。')