OKAと申します。
kintoneにおいて、新規レコード登録時にChart.jsを使用して作成したグラフを「添付ファイル」フィールドに設定したいと考えております。
目的はグラフをプリントクリエイターで帳票出力させるためです。
「ファイルアップロードで必須となる3つの手順」を参考にfileKeyを取得するところまではできましたが、
これを「添付ファイル」フィールドに設定することができませんでした。
下記のように指定しても「未定義または NULL 参照のプロパティ ‘fileKey’ は設定できません」とエラーが表示されます。
var record = event.record;
record[‘添付ファイル’][‘value’][0][‘fileKey’] = key;
レコード登録時にfileKeyを設定する方法がございましたらご教授いただけますでしょうか。
よろしくお願い致します。
OKAさん
おそらくfilekeyの取得処理は非同期になっているため、イベント内でfilekeyを利用しようとしても定義されていないという状態なのだと思います
なのでkintone Promiseオブジェクトを用いて非同期処理の実行を待ってレコードを登録する必要があります。
瀧ヶ平 様
ご返信いただきありがとうございます。
fileKeyの取得は下記のように行っており、同期処理はできている考えております。
xmlHttp = ``new
XMLHttpRequest();
xmlHttp.open(``"POST"``, encodeURI(``'/k/v1/file.json'``), ``false``);
xmlHttp.setRequestHeader(``'X-Requested-With'``, ``'XMLHttpRequest'``);
xmlHttp.responseType = ``'multipart/form-data'``;
xmlHttp.send(formData); // formData : 添付したいデータ
var
key = JSON.parse(xmlHttp.responseText).fileKey;
上記の有無に関わらず、record[‘添付ファイル’][‘value’][0][‘fileKey’] = ‘hoge’ や record[‘添付ファイル’][‘value’][0][‘name’] = ‘hoge’ と適当な文字列を指定しようとしても同様のエラーが表示されます。
「添付ファイル」フィールドは上記のような方法では値指定できない仕様なのでしょうか。
OKAさん
おそらくREST APIでのファイルのアップロードはREST APIのみによって登録できるということになるのかもしれないですね。
代替案としては、filekeyを格納するフィールドを用意しておき、app.record.detail.showイベントで添付ファイルフィールドのfilekeyとfilekeyのフィールドの値が一致しない場合にREST APIによってPUT処理を行う方法などがありますがどうでしょうか?