kintone初心者:APIが空レコードが入る問題

PythonでAPIを実行しようと作成しましたが、空のレコードが送られます。
コードの書き方がいけないのでしょうか。教えていただけないでしょうか。
※フィールド名が誤りないことは確認済み
※型も誤りがないことを確認済み
※●●●はマスキングです。

実施したいこととしては、下記の得意先1の値をaaaaに送りたいです。
元データの総量は5万近くあるので、それらをすべて送り込みたいです!
元データ:カラム名「得意先名1」 値の例「A株式会社」
送り先:カラム名「aaaa」 値の例「A株式会社」

import requests
import json

サブドメイン、アプリID、APIトークンを定義

subdomain = ‘●●●’
app_id = ‘6’
api_token = ‘●●●’

Databricksカタログからデータを読み込む

df = spark.sql(“SELECT 得意先名1 FROM external.u_gold.its_keiyaku_getsuji”)

Kintone APIエンドポイント

url = f"https://{subdomain}.cybozu.com/k/v1/records.json"

Kintone APIのヘッダー

headers = {
“X-Cybozu-API-Token”: api_token,
“Content-Type”: “application/json”
}

Kintone API用のデータを準備

records_to_create =
for row in df.collect():
record = {
“tokuisakimei”: {“value”: row[‘得意先名1’]}
}
records_to_create.append({“record”: record})

レコードを100件ずつ分割して送信

batch_size = 100
for i in range(0, len(records_to_create), batch_size):
batch = records_to_create[i:i + batch_size]
payload = {
“app”: app_id,
“records”: batch
}
response = requests.post(url, headers=headers, data=json.dumps(payload))

# レスポンスのステータスを確認
if response.status_code == 200:
    print(f"Batch {i//batch_size + 1} successfully created in Kintone.")
else:
    print(f"Failed to create batch {i//batch_size + 1} in Kintone. Status code: {response.status_code}, Response: {response.text}")

Python読めなくて申し訳ないんですが、
この時点でどんなデータを送ろうとしているのかと、レスポンスどんなのが返ってきたか書いてくださると回答がつくかもしれません!

「いいね!」 1

@jurippe 返信ありがとうございます。

実施したいこととしては、下記の得意先1の値をaaaaに送りたいです。
元データの総量は5万近くあるので、それらをすべて送り込みたいです!
元データ:カラム名「得意先名1」 値の例「A株式会社」STRING
送り先:kintone カラム名「aaaa」 値の例「A株式会社」文字列

なのですが何かわかる部分ございますでしょうか・・・色々試したのですがうまくいかなく・・・

同じくpythonはほとんど知らないですが、こちらのページと照らし合わせた感じだと、

records_to_create.append({"record": record})

ではなく

records_to_create.append(record)

とかにしてみると変化がありそうです。
つまりは、、、

batch = records_to_create[i:i + batch_size]

の処理で現在batchに何が入っているか不明ですが、batchの中身が

// kintoneのフィールドコード名「tokuisakimei」とする
[
  {"tokuisakimei": {"value": "A株式会社"}},
  {"tokuisakimei": {"value": "B株式会社"}},
  // …
  {"tokuisakimei": {"value": "Z株式会社"}}
]

になっているとうまくいきそうな気がします。

@puppet
ご回答ありがとうございます!
もしかしてvalueの部分に問題があるかもと思い再度パトロールしたところ、
うまく送られました。
お騒がせいたしました。
@jurippe @puppet
ありがとうございました!

import requests

url = "https://ドメイン.cybozu.com/k/v1/record.json"
api_token = "●●●"

def add_records_one_by_one(records):
    for i, record in enumerate(records):
        payload = {
            "app": "29",
            "record": record
        }
        headers = {
            "X-Cybozu-API-Token": api_token,
            "Content-Type": "application/json"
        }
        response = requests.post(url, headers=headers, json=payload)
        if response.status_code == 200:
            print(f"Record {i + 1} added successfully.")
        else:
            print(f"Failed to add record {i + 1}: {response.status_code} - {response.text}")

df = spark.sql("SELECT `得意先名1` FROM external.u_gold.its_keiyaku_uwagaki")

records = [
    {
        "aaaa": {
            "value": row['得意先名1'] if row['得意先名1'] else "N/A"
        }
    }
    for row in df.collect()
]

add_records_one_by_one(records)
「いいね!」 3

専用機能・コース | kintone(キントーン)エンタープライズ企業の方向け特設サイト

現在1件ごとのAPIを提示されていますが、契約プランごとに上限がありますのでご注意ください。

「いいね!」 2

@puppet
そうなのですね!把握しておりませんでした。ありがとうございます。こちらも拝見させていただきます!

「いいね!」 1

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。