新規投稿
フォローする

サブテーブルのフィールドをキーとした別アプリの自動更新

背景・実現したいこと

①申込アプリのルックアップ機能で稟議アプリのレコード番号を取得(手動入力)。

②申込アプリ保存時、申込アプリの「稟議アプリレコード番号(サブテーブル内にあり)」の値と同じ稟議アプリのレコード番号を探す

③②で探したレコード番号のレコードにチェックボックを自動更新(「済」にする)

※カスタマイズは申込アプリに適用しています。

困っていること(2点)

・②の稟議アプリレコード番号(サブテーブル)が一明細しか入っていない場合は、正常に稟議アプリへのチェックボックス自動更新が行えます。ですが、サブテーブル内の明細が複数行になった場合2行目以降が実行されません。

→2行目以降も1行目と同様の処理をしたい

・申込アプリ保存時に稟議アプリレコード番号(サブテーブル)が未入力の場合、に保存ができません。

→未入力は処理をかけずに通常の登録ができるようにしたい。

ご教授お願いできますでしょうか。

お手数おかけしますが、よろしくお願い申し上げます。

使用しているソースコード



/**
* データ取得(同期:1件)
* @param appId アプリID
* @param query 抽出条件
*/

function getRecord(appId, query) {

var record;
var appUrl = kintone.api.url('/k/v1/records') + '?app='+ appId + '&query=' + encodeURIComponent(query) + ' offset 0';

// 同期リクエストを行う
var xmlHttp = new XMLHttpRequest();
xmlHttp.open("GET", appUrl, false);
xmlHttp.setRequestHeader('X-Requested-With','XMLHttpRequest');
xmlHttp.send(null);

//取得したレコードを格納
var respdata = JSON.parse(xmlHttp.responseText);
if(respdata.records.length > 0){
record = respdata.records[0];
}

return record;
}

 

 

/**
* REST API 実行
* @param method POST/PUT/DELETE
* @param url URL
* @param sync 同期 false/非同期 true
* @param param パラメータ
*/

function execRestAPI(method, url, sync, param) {

var xmlHttp = new XMLHttpRequest();
var appUrl = kintone.api.url(url);
//alert(appUrl);

xmlHttp.open(method, appUrl, sync);
xmlHttp.setRequestHeader('X-Requested-With','XMLHttpRequest');
xmlHttp.setRequestHeader('Content-Type','application/json');
xmlHttp.send(JSON.stringify(param));

if (xmlHttp.status != 200) {
// error
console.log(xmlHttp.responseText);
}

return xmlHttp.status;

}

/**
* 稟議アプリの更新
* @param
*/

function updRingi(Rrecord) {
var query = 'レコード番号=' + Rrecord //表示イベントで取得した申込アプリで取得した稟議レコード番号と同じ値のレコードを取得
var RingiRecord = getRecord(695, query); //稟議アプリのレコード番号取得

var param = {
app : 695,     //稟議アプリのID
id : RingiRecord['$id']['value'], //レコード番号で取得したレコードの申込完了区分を更新
record : {
"申込書消込区分": {value: ['済']}


},


"__REQUEST_TOKEN__" : kintone.getRequestToken()


}


var status = execRestAPI('PUT', '/k/v1/record', false, param);  //更新処理
if (status != 200) {

alert('5');
return false;
}

 


}




/*========================================================================/
// 表示時のイベント(レコード一覧画面)
/========================================================================*/

kintone.events.on(['app.record.index.edit.submit', 'app.record.create.submit', 'app.record.edit.submit'], function(event) {  //新規登録画面・修正画面で保存ボタン実行時にイベント開始
var record = event.record;
var Rrecord = record['口振種目情報']['value'][0]['value']['稟議レコード番号']['value'] //稟議レコード番号取得


/*-------------------------/
/ 管理マスタの更新
/-------------------------*/
var result;


result = updRingi(Rrecord);

alert('稼動日報作成が異常終了しました2。');


return event;


});











0

1件のコメント

Avatar
juridon

こんにちは!

サブテーブルの情報を元に、
複数レコードを一括更新したいという感じでしょうか??

var status = execRestAPI('PUT', '/k/v1/record', false, param);  //更新処理

のところのURLは'k/v1/records'になると思います。
※paramも変わってくると思います。

↓こちら一括更新のドキュメントです。
https://developer.cybozu.io/hc/ja/articles/201941784#step2

ご参考になればいいのですが(><)

0
サインインしてコメントを残してください。