レコードにデータが入っていない時、レコード番号を使う。

・下記のように、コードを書いています。

レコード番号取得まではできたのですが、その後、if文を使用すると

uncaught referenceerrorと出力されます。

 

利用したソースコード

**(function () { 'use strict'; kintone.events.on('app.record.create.submit.success', async (e) =\> {   
  
// レコード番号取得 const recordId = e.recordId;   
// nameが入力されていない時、レコード番号を取得する。  
 let name = e.record['name\_data'].value; if (!name) {   
// nameの中に、レコード番号を導入する。  
   
const parameter = { app: kintone.app.getId(), id: recordId, record: { name\_data: { value: recordId } } } };   
// 非同期処理を行う。 const client = new KintoneRestAPIClient(); console.log(parameter);   
  
// 処理できない場合は、alertで出力   
try {   
await client.record.updateRecord(parameter);   
} catch (error) {   
alert('error');   
} finally {  
 return e;   
} });  
 })();**   

 

こんにちは!
pekoと申します。

 フィールドコードname_dataに値が入力されている場合にはparameterが宣言されないため、
それが原因でエラーが発生していると思われます。

これはif文の閉じかっこの位置を変更することで対応できると思います。
下記にif文の閉じカッコの位置とインデントを調整したものをペーストしましたので、参考にしてください。

(「name_dataに値が入力されていない場合、レコード番号をname_dataに登録する」
仕様で作成していますので、もし誤っていましたらご訂正ください)

kintone.events.on('app.record.create.submit.success', async (e) => {
  // レコード番号取得
  const recordId = e.recordId;
  // nameが入力されていない時、レコード番号を取得する。
  let name = e.record['name_data'].value;
  if (!name) {
    // nameの中に、レコード番号を導入する。
    const parameter = {
      app: kintone.app.getId(),
      id: recordId,
      record: {
        name_data: {
          value: recordId
        }
      }
    }
    // 非同期処理を行う。
    const client = new KintoneRestAPIClient();
    console.log(parameter);

    // 処理できない場合は、alertで出力
    try {
      await client.record.updateRecord(parameter);
    } catch (error) {
      alert('error');
    } finally {
      return e;
    }
  } // if文ここで終了
});

 

ご回答ありがとうございます。

動作はしませんでした。

const record = e.recordで定義をする他、別の作業も必要だと思われました。

お送りいただいた「利用したソースコード」に記述されている処理は、
不自然に思われる箇所でコメントアウトされている所が見受けられます。

(ペースト時のミスかなと思ったので特に触れませんでしたが、どういう感じでしょうか。。?)

そのため、コメントアウトされるべきではないコードのコメント化も解く必要があると思います。

ご回答ありがとうございます。

if文ここで終了に関しては、入力した覚えはないです。

何かのエラーで入力されたのではないかなと思います。

「// if文ここで終了」のコメントは私が追加しました。
理解の補助のために追加しましたが、見づらければ消していただいて問題ありません。

我、秦国の300人将なり 様

こんにちは、一点気になったのですが、

// レコード番号取得
  const recordId = e.recordId;

の部分ですが、

// レコード番号取得
  const recordId = e.record.recordId.value;

では、ないでしょうか?

uncaught referenceerrorと出力されるとのとこでしたが、どの部分でそちらのエラーがでますか?
chromeやEdgeのデベロッパーツールでご確認いただいて追記いただけたら何かしら助言できるかと思われます。
https://developer.cybozu.io/hc/ja/articles/207613916-%E5%8B%95%E3%81%8B%E3%81%AA%E3%81%84-%E3%81%9D%E3%82%93%E3%81%AA%E6%99%82%E3%81%AF%E3%83%87%E3%83%90%E3%83%83%E3%82%B0%E3%82%92%E3%81%97%E3%81%A6%E3%81%BF%E3%82%88%E3%81%86-%E5%85%A5%E9%96%80%E7%B7%A8 

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