Garoonの予定から時刻を取得し、kintoneのテーブルの時刻フィールドにセットしたい

Garoonの予定から時刻を取得し、kintoneのテーブルの時刻フィールドにセットしたいのですが、74行目がエラーになります。

原因と解決策をご教示いただけると幸いです。

以下コードを記載します。

(function() {
‘use strict’;

kintone.events.on([‘app.record.create.show’, ‘app.record.edit.show’], function(event) {
var space = kintone.app.record.getSpaceElement(‘button’);
$(space).append(‘<button id=“my-button” type=“button”>Garoonの予定を取得する</button>’);

$(‘#my-button’).on(‘click’, function() {
var record = kintone.app.record.get();
var date = record.record.date.value;

getSchedule(date).done(function(xml) {
var scheduleList = [];
$(xml).find(‘schedule_event’).each(function() {
scheduleList.push($(this));
});

var daliyReportInfo = [];
$(scheduleList).each(function() {
var plan = $(this).attr(‘plan’) ||“”; // 追加
var title = $(this).attr(‘detail’) ||“”;
var memo = $(this).attr(‘description’) ||“”; // 追加
var allday = $(this).attr(‘allday’);
var eventType = $(this).attr(‘event_type’);

var prefix = ‘’, diff = ‘’;
var startDateTime = ‘’, endDateTime = ‘’;
if (allday === ‘false’) {
if (eventType === ‘normal’) {
startDateTime = $(this).find(‘datetime’).attr(‘start’);
endDateTime = $(this).find(‘datetime’).attr(‘end’);
} else if (eventType === ‘repeat’) {
var startDate = $(this).find(‘condition’).attr(‘start_date’);
var startTime = $(this).find(‘condition’).attr(‘start_time’);
var endTime = $(this).find(‘condition’).attr(‘end_time’);

startDateTime = startDate + ’ ’ + startTime;
endDateTime = startDate + ’ ’ + endTime;

diff = moment(endDateTime).diff(moment(startDateTime), ‘hours’, true);
if (diff < 0) {
diff += 24;
}
} else if (eventType === ‘banner’) {
prefix = '期間予定: ';
}
} else {
prefix = '終日予定: ';
}

var kaishi = moment(startDateTime); // 開始時間
var kaishijikan = kaishi.format(‘HH:mm’);
console.log(kaishijikan);

var owari = moment(endDateTime); // 終了時間
var owarijikan = owari.format(‘HH:mm’);
console.log(owarijikan);

daliyReportInfo.push(kaishijikan);
});

daliyReportInfo.sort();
var daliyReport1 = daliyReportInfo.join(‘’);

setkaishijikan(record, daliyReport1);
});
});
});

function setkaishijikan(record, daliyReport1) {
console.log(record);
//テーブルの中にある時刻フィールドに開始時間をセットしたいのだがエラーになる
//エラー内容 Uncaught TypeError: Cannot set property ‘value’ of undefined
record.record.table.value.kaishi.value = daliyReport1;
kintone.app.record.set(record);
}

function getSchedule(date) {
var m = moment(date).utc();
var start_datetime = m.format(‘YYYY-MM-DDTHH:mm:ssZ’);
var end_datetime = m.add(1, ‘days’).add(-1, ‘seconds’).format(‘YYYY-MM-DDTHH:mm:ssZ’);

var data = ‘<?xml version=“1.0” encoding=“UTF-8”?>’;
data += ‘<soap:Envelope xmlns:soap=“http://www.w3.org/2003/05/soap-envelope”>’;
data += ’ <soap:Header>‘;
data += ’ <Action>’;
data += ’ ScheduleGetEvents’;
data += ’ </Action>‘;
data += ’ <Security>’;
data += ’ <UsernameToken>‘;
data += ’ <Username></Username>’;
data += ’ <Password></Password>‘;
data += ’ </UsernameToken>’;
data += ’ </Security>‘;
data += ’ <Timestamp>’;
data += ’ <Created>2010-08-12T14:45:00Z</Created>‘;
data += ’ <Expires>2037-08-12T14:45:00Z</Expires>’;
data += ’ </Timestamp>‘;
data += ’ <Locale>jp</Locale>’;
data += ’ </soap:Header>‘;
data += ’ <soap:Body>’;
data += ’ <ScheduleGetEvents>‘;
data += ’ <parameters start="’ + start_datetime + ‘" end="’ + end_datetime + ‘"> </parameters>’;
data += ’ </ScheduleGetEvents>‘;
data += ’ </soap:Body>’;
data += ‘</soap:Envelope>’;

return $.ajax({
method: ‘POST’,
url: ‘/g/cbpapi/schedule/api?’,
data: data,
dataType: ‘xml’,
contentType: ‘text/xml’
});
}

})();

mojitoさん

コード全体は見れていないですが、エラーだけ見ると、テーブル内のフィールドに対する指定が

間違っているためのエラーかと思います。

下記のように指定することで、テーブル内の1行目の時刻フィールドを指定できるかと思います。

record.record.table.value[0].value.kaishi.value

また、undefinedなどが出ている場合には、デバッグしながら、オブジェクトの中身を見ていくといいかと思います。

 

サクラエビさん

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

ご指摘いただいたコードに変えて走らせたところ下記のようなエラーが表示されました。

エラー

  • カスタマイズ用のJavaScriptの実行時にエラーが発生しました。アプリの管理者にお問い合わせください。
    • event.record[‘table’].value[0][‘kaishi’].value が不正です。

原因と解決策をご教示いただけると幸いです。

 

mojitoさん

上記は対象のフィールドに対して、リターンした形式が誤っている場合に発生するエラーです。

時刻フィールドの場合、"12:00"のような形式で値を指定する必要があります。

https://developer.cybozu.io/hc/ja/articles/202166330

パッと見はフォーマットの変更をしているように見えますが、デバッグしながら、設定している値を

再度確認して見てはいかがでしょうか?