API経由で新規タスクを作成する際にユーザー選択の値を登録しようとするとエラーが起こる

何を実現したいのかを書きましょう

PowerShellにて、Excelの情報をAPI経由で新規レコードとして作成できるようにしたいです。

発生した問題やエラーメッセージを具体的に書きましょう

その中で、ユーザー選択フィールドに対応する情報を組み込もうとすると以下のようなエラーが発生します。

Invoke-RestMethod : {“code”:“CB_IJ01”,“id”:“kQNmpYZx3xA84qKlmX3f”,“message”:“不正なJSON文字列です。”}

実行したコードをコピー&ペーストしましょう

# kintoneの接続情報
$domain = 'xxx.cybozu.com'
$appId = 'xxx'
$apiToken = 'xxx'

# レコードを一括作成
$recordUrl = "https://$domain/k/v1/records.json"

# CSVファイルパスとエンコーディング
$csvFilePath = 'C:\Users\ITS12308\Desktop\kintone.csv'

# CSVファイルを読み込む
$csvData = Import-Csv -Path $csvFilePath -Encoding oem

# レコード情報の格納用変数
$recordDataList = @()


# CSVの各行を処理
foreach ($row in $csvData) {
    # レコード情報を作成し、$recordDataListに追加
    $recordData = @{
      #  '文字列__1行_' =  @{"value"=$row.文字列__1行_}
      #  '文字列__1行__0' =  @{"value"=$row.文字列__1行__0}
      #  '文字列__1行__1' =  @{"value"=$row.文字列__1行__1}
        '_1' =  @{"value"=$row.最優先}
        '_2' =  @{"value"=$row.Status}
        '_3' =  @{"value"=$row.Phase}
        '_4' =  @{"value"=$row.業務種類}
        '_5' =  @{"value"=$row.グループ名}
        '_6' =  @{"value"=$row.作業タイトル}
        '_7' =  @{"value"=$row.作業開始日}
        '_8' =  @{"value"=$row.作業期限日}
        '_9' =  @{"value"=
            @{ "code"= $row.ログインメールアドレス
               "name"= $row.作業担当者
               }
                }
        '_10' =  @{"value"=$row.工数__予想人日_}
        '_11' =  @{"value"=$row.工数__実績人日_}
        '_12' =  @{"value"=$row.詳細メモ}

        # 必要なフィールドと値を追加
    }
    $recordDataList += $recordData
}

# レコードを一括作成
$recordUrl = "https://$domain/k/v1/records.json"

Write-Host $records

$records = @{
    'app' = $appId
    'records' = $recordDataList
} | ConvertTo-Json  -Depth 30

# json をバイト配列にする
$body = [System.Text.Encoding]::UTF8.GetBytes($records)

 #>


$headers = @{
    'X-Cybozu-API-Token' = $apiToken
}

$response = Invoke-RestMethod -Uri $recordUrl -Headers $headers -ContentType 'application/json' -Method Post -Body $body


# レスポンスの確認
if ($response -ne $null) {
    Write-Host "レコードの作成に成功しました。"
} else {
    Write-Host "レコードの作成に失敗しました。"
    Write-Host $response
}

<検証済み事項>
ユーザー選択のフィールドコード’_9’に関連するコードを除いた場合は問題なく、新規タスクが作成される
「xxx」に部分については自社テナントのドメイン、アプリID、APIトークンを入力、動作確認済み。
エクセル内の情報(列名の文字コード、表示形式など)は問題ないことを確認済み

        '_9' =  @{"value"=
            @{ "code"= $row.ログインメールアドレス
               "name"= $row.作業担当者
               }
                }

        '_9' =  @{"value"=
          @(
            @{
               "code"= $row.ログインメールアドレス
               "name"= $row.作業担当者
            }
          )
        }

ユーザー選択フィールドはcode,nameのkeyを持つオブジェクトの配列になります。フィールドごとの値についてはフィールド形式を参照して下さい。

ご回答いただきありがとうございます。ご提示いただきましたコードを参考にこちらでも試し、無事エラーが解消されました。

2 Likes

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