何を実現したいのかを書きましょう
エクセルデータの1行に対して1レコードの登録
発生した問題やエラーメッセージを具体的に書きましょう
Script is starting…
Status code: 400
Response body: {“code”:“CB_VA01”,“id”:“WifXvhCnXwH4paq4bymX”,“message”:“入力内容が正しくありません。”,“errors”:{“records”:{“messages”:[“必須です。”]}}}
Error: {‘code’: ‘CB_VA01’, ‘id’: ‘WifXvhCnXwH4paq4bymX’, ‘message’: ‘入力内容が正しくありません。’, ‘errors’: {‘records’: {‘messages’: [‘必須です。’]}}}
実行したコードをコピー&ペーストしましょう
import requests
import json
import pandas as pd
print(“Script is starting…”)
Excelデータを読み込む
df = pd.read_excel(‘C:\Users\yotar\OneDrive\デスクトップ\aaabbbcb.xlsx’)
レコードを辞書形式のリストに変換
records = df.to_dict(‘records’)
Kintoneの情報を設定
subdomain = ‘bbb’ # サブドメインを指定
app_id = ‘aaa’ # アプリIDを指定
api_token = ‘Tr66hUDyUhgfgvhbluW3aPqdmDYGslsLj2ydlz4fEobD’ # APIトークンを指定
REST APIのエンドポイントURLを作成
url = f"https://{subdomain}.cybozu.com/k/v1/records.json?app={app_id}"
ヘッダー情報を設定
headers = {
“X-Cybozu-API-Token”: api_token,
“Content-Type” : “application/json”
}
各レコードに対してリクエストを送る
for record in records:
# Timestamp オブジェクトを文字列に変換
for key, value in record.items():
if isinstance(value, pd.Timestamp):
record[key] = value.isoformat()
data = {
"app": app_id,
"record": record
}
response = requests.post(url, headers=headers, data=json.dumps(data))
print(f"Status code: {response.status_code}")
print(f"Response body: {response.text}")
# レスポンスをチェック
if response.status_code != 200:
print(f"Error: {response.json()}")
print(“Script has finished.”)
kintoneのアプリに必須項目はなく、
文字列や数値のみです。
すべてCHATGPTで作っています
pythonなどプログラミングはほとんどわかりません。
なぜこのような結果になるのかわかりません。
コードのどの部分に修正が必要か教えて頂きたいです