kintone의 상세 화면이 열릴 때 필드의 값을 변경하고 싶습니다.

이번에는, kintone 커스터마이즈의 초보자가 하기 쉽다(기분한다) 「그 코드 잘못 tone」을 공양하고 싶습니다.

🤔 상세 화면 열 때 필드 값을 변경하고 싶습니다.



🤔「편집 화면이 아니고, 상세 화면에서 필드의 값을 바꾸고 싶은데, 변하지 않습니다!
어디를 바꾸면 좋을까! ?
작성한 코드는 이것입니다. "
  // レコード詳細画面表示後
  kintone.events.on(
    ["app.record.detail.show"],
    (event) => {
      const record = event.record;
      console.log("変更前", record.会社名.value);

      record.会社名.value = "テスト";
      console.log("変更後", record.会社名.value);

      return event;
    }
  );


🙄「아~~. 이건・・・

🤔「하지만 콘솔에서 확인하면 record.회사명.value의 값은 바뀌고 있어요👀」

↓콘솔로 확인하면 내부적으로는 「테스트」로 바뀌고 있지만


↓상세 화면의 회사명은 변하지 않는다.


상세 화면에서는 event.record 변경해도 표시에 반영되지 않습니다!


event.record.フィールドコード.value = "何らかの値";
return event; 

그래서 솔직하게 값이 바뀌는 것은
「레코드 추가 화면의 표시 후 이벤트」와 「레코드 편집 화면의 표시 후 이벤트」와 「레코드 일람 화면의 인라인 편집 필드 값 변경시 이벤트」입니다.

그럼, 「상세 화면」에서는 어떻게 하면 좋을까👀

💡 외형만 변경하면 된다면



필드의 값으로서는 덮어쓰기 보존하지 않아도 되고, 상세 화면을 열 때에 외형만 바뀌어 주면 좋다!
라고 하는 경우는 아래와 같이 DOM 조작해 변경하면 좋다고 생각합니다.
kintone.app.record.getFieldElement("会社名").textContent= "テスト";

💡 필드의 값별로 업데이트하고 싶은 경우



상세 화면을 열 때 최신 값으로 업데이트하고 싶습니다!
그렇다면 아래와 같이 kintone REST API를 사용하여 업데이트해야합니다.

그렇지만 「상세 화면을 열 때마다 갱신」이라고 하는 것은 즉, 「상세 화면을 열지 않으면 평생 갱신되지 않는 채」라고 하는 것이므로, 갱신 타이밍에 대해서는 제대로 생각하지 않으면 안됩니다.

또, 최신이라면 리로드하지 않는 것 같은 움직임으로 하는 경우, 「최신이란?」의 정의를 결정하지 않으면 영원히(API 회수가 고갈될 때까지) 리로드를 계속하는 것 같은 앱이 되어 버릴 것입니다 .
// レコード詳細画面、
kintone.events.on(["app.record.detail.show"], (event) => {
  const record = event.record;

  // 値が最新だったら更新しない(ここは工夫してね)
  if (record.会社名.value === "テスト") {
    return event;
  }

  // レコード更新のパラメータ設定
  const body = {
    app: kintone.app.getId(),
    id: kintone.app.record.getId(),
    record: {
      会社名: {
        value: "テスト",
      },
    },
  };

  // フィールドの値を更新する
  return kintone.api(
    kintone.api.url("/k/v1/record.json", true), "PUT", body, (resp) => {
      // 更新できたらリロード
      location.reload();
    }
  );
});

요약



상세 화면에서는 event.record 변경해도 표시에 반영되지 않습니다! 라고 하는 것은 kintone 커스터마이즈 초보자 쪽이 빠지기 쉬운 곳이라고 생각합니다.
표시만 바꾸고 싶은 경우, 레코드 자체 갱신하고 싶은 경우로 처리 방법도 다르므로 어느 타이밍에 갱신할까 등 잘 생각해 커스터마이즈 해 보세요 👀✨

좋은 웹페이지 즐겨찾기