🙆

kintoneで、フィールドの編集権限がなくても入力できちゃうようにする方法

2022/04/30に公開

kintone REST APIの共通仕様のページにはこう書いてあります。

APIトークンを使用した操作は、Administratorによる操作として記録されます。

ふむふむ。
つまり、編集権限のないフィールドになにか入力したりしてPOSTしたいなら、APIトークン認証使ったらいいわけね👀

kintone UI Componentと、kintone REST API Clientを使ったよ。

kintone.events.on(["app.record.index.show"], (event) => {
  const header = kintone.app.getHeaderMenuSpaceElement();
  
  const button1 = new Kuc.Button({
    text: "レコード追加1",
    type: "submit",
  });
  const button2 = new Kuc.Button({
    text: "レコード追加2",
    type: "submit",
  });
  header.appendChild(button1);
  header.appendChild(button2);

  // kintone REST API Client使う場合
  button1.addEventListener("click", async (event) => {
    const rec = {
      名前: { value: "なまえ" },
      職業: { value: "しょくぎょう" },
    };
    const client = new KintoneRestAPIClient({
      auth: { apiToken: "APIトークン(ベタ書きはよくない)" },
    });
    const res = await client.record.addRecord({ app: 490, record: rec });
  });

  // XMLHttpRequest を使ったリクエスト
  button2.addEventListener("click", (event) => {
    const body = {
      app: kintone.app.getId(),
      record: {
        名前: {
          value: "なまえ2",
        },
        職業: {
          value: "しょくぎょう2",
        },
      },
      // CSRF TOKEN: kintone上からAPI(POST, PUT, DELETE)を実行する場合に設定する必要あり
      __REQUEST_TOKEN__: kintone.getRequestToken(),
    };

    const url = "https://{subdomain}.cybozu.com/k/v1/record.json";
    const xhr = new XMLHttpRequest();
    xhr.open("POST", url);
    xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
    xhr.setRequestHeader("Content-Type", "application/json");
    xhr.setRequestHeader("X-Cybozu-API-Token", "APIトークン(ベタ書きはよくない)");
    xhr.onload = function () {
      if (xhr.status === 200) {
        // success
        console.log(JSON.parse(xhr.responseText));
      } else {
        // error
        console.log(JSON.parse(xhr.responseText));
      }
    };
    xhr.send(JSON.stringify(body));
  });
});

Discussion