GASでユーザー登録APIを連携するが、エラーとなる。

yuichi_bf99a2

2023.06.22既読 1043

GASでユーザー登録を実装しようと考えています。
以下コードでエラーが出ます。
ユーザー削除で使えているtokenを使用しているので、tokenは間違っていないと思います。
ドメインIDの値は間違っていないかと思います。
初心者で初歩的なところで間違えているかもしれません、ご教授願います。
■エラー
{"code":"INVALID_PARAMETER","description":"domainId is required."}

■コード
function addUser(token) {

  let headers = {
    "Authorization": "Bearer " + token,
    "Content-Type": "application/json",
  };

  let data =
  {
  "domainId": ×××××××,
  "email": "×××××××",
  "userName": {
    "lastName": "ワークス",
    "firstName": "太郎"
  },
  "passwordConfig": {
    "passwordCreationType": "ADMIN",
    "password": "test",
  },
  "privateEmail": "×××××××",
  "searchable": true,
}

  var options = {
    'method': 'post',
    'headers': headers,
    'body': data
  };

 
  let response = UrlFetchApp.fetch("https://www.worksapis.com/v1.0/users",options);
}

コメント2

  • 업데이트 된 답글입니다.

    yuichi_bf99a2 投稿者

    こちら自己解決できました。

    bodyをpayloadにすることでできました。

    2023.06.22

    1
  • 업데이트 된 답글입니다.

    'name'

    エラーメッセージ「{"code":"INVALID_PARAMETER","description":"domainId is required."}」は、domainIdが要求されているにも関わらず、APIリクエストにそのパラメータが含まれていない、または正しくないフォーマットで提供されていることを意味しています。

    あなたのコードを見る限り、domainId, email, password, privateEmail などの具体的な値は伏せられていますが、「×××××××」として提供されていることから、これらのフィールドが文字列として正しく扱われていない可能性があります。JSONデータ内で値を文字列として扱う場合は、値をダブルクオート("")で囲む必要があります。

    また、optionsオブジェクト内でリクエストボディをJSON文字列に変換し、正しいプロパティ名payloadを使用する必要があります。bodyというプロパティ名はUrlFetchApp.fetchメソッドでは認識されません。

    以下に修正されたコードサンプルを示します:





    function addUser(token) {
     let headers = {
       "Authorization": "Bearer " + token,
       "Content-Type": "application/json",
     };

     let data = JSON.stringify({
       "domainId": "12345678", // ここに正しいdomainIdを文字列として設定します
       "email": "test@test.com", // ここに新規登録するユーザーのメールアドレスを文字列として設定します
       "userName": {
         "lastName": "ワークス",
         "firstName": "太郎"
       },
       "passwordConfig": {
         "passwordCreationType": "ADMIN",
         "password": "test", // 適切な初期パスワードを文字列として設定します
       },
       "privateEmail": "private@example.com", // ユーザーのプライベートメールを文字列として設定します
       "searchable": true,
     });

     var options = {
       'method': 'post',
       'headers': headers,
       'payload': data // 'body' の代わりに 'payload' を使用します
     };

     let response = UrlFetchApp.fetch("https://www.worksapis.com/v1.0/users";, options);
     console.log(response.getContentText()); // レスポンス内容を確認するためのログ出力
    }



    このサンプルでは、domainId, email, password, privateEmail を適切な値に置き換える必要があります。また、GASのコンソールログに出力して、実行結果を確認できるようにconsole.logを使用しています。

    これらの修正後に再び実行し、エラーが解消されるかを確認してください。

    2023.12.22

    0
前の投稿LINEWORKSのSCIM対応の有無について
次の投稿ユーザーが投稿したファイルのファイル名を取得(フリープラン)
リスト

まだ、解決できませんか?
今すぐ実際に使用しているLINE WORKSユーザーに質問してみましょう。