現在レコード上にボタンを表示させ、ボタンを押したら、①メールが立ち上がる、と同時に②ステータスを変更する、の2つのタスクを実行させるようにしたいと考えています。
①の機能についてはうまく実行できたのですが、②の機能についてはうまく実行できずに困っています。
以下のスクリプトの// ステータスを変更するためのコード*以降に問題があると思うのですが、調べた限りでは原因がわかりませんでした。
具体的な内容としては、「作成中」のステータスだった場合に、「依頼中」のステータスに変更し、かつそのときの作業者を「対応者」フィールドで指定されているユーザー(=UserField)に指定するように書いたつもりです。
どなたか詳しい方がおられればご助言をお願いします。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
kintone.events.on(‘app.record.detail.show’, function(event) {
var record = event.record;
var userField = record[‘対応者’];
var userField2 = record[‘関係者’];
var email = userField.value.length > 0 ? userField.value.map(user => user.code).join(';') : '';
var ccemail = userField2.value.length > 0 ? userField2.value.map(user => user.code).join(';') : '';
var emailBody = `
依頼の種類:
${record[‘依頼の種類’].value}
添付ファイルがある場合は添付してください
; var requestType = record['依頼の種類'].value; var subject =
${requestType}${record.相手方法人名.value}${record.契約書名.value}; var fieldElement = kintone.app.record.getFieldElement('mail'); if (fieldElement && !document.getElementById('open-email-button')) { var button = document.createElement('button'); button.id = 'open-email-button'; button.innerHTML = '依頼メールを送信する'; Object.assign(button.style, { margin: '10px', padding: '10px', backgroundColor: '#4CAF50', color: 'white', border: 'none', borderRadius: '5px' }); button.onclick = function() { if (email) { window.location.href =
mailto:${email}?cc=${ccemail}&subject=${encodeURIComponent(subject)}&body=${encodeURIComponent(emailBody)}`;
// ステータスを変更するためのコード
var recordId = kintone.app.record.getId();
var headers = {
'X-Cybozu-API-Token': 'APIトークン',
'Content-Type': 'application/json',
'X-Requested-With': 'XMLHttpRequest' // 追加したヘッダー
};
if (record.ステータス.value === '作成中') {
var body = {
app: kintone.app.getId(),
id: recordId,
action: '依頼中', // 変更したいステータス名を指定
assignee: userField.value.length > 0 ? userField.value[0].code : null // 対応者フィールドのユーザーを作業者として設定
};
kintone.api(kintone.api.url('/k/v1/record/status.json', true), 'PUT', body, function(resp) {
console.log('ステータスが「依頼中」に変更されました:', resp);
alert('ステータスが「依頼中」に変更されました。');
}, function(error) {
console.error('ステータス変更に失敗しました:', error);
alert('ステータス変更に失敗しました。エラー内容をコンソールで確認してください。');
}, { headers: headers });
}
} else {
alert('メールアドレスが設定されていません。');
}
};
fieldElement.appendChild(button);
}
});