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

**URL:** https://community.cybozu.dev/t/topic/3137
**Category:** Garoon カスタマイズ
**Created:** [2018 年 6 月 19 日午前 1:53 UTC](https://community.cybozu.dev/t/topic/3137 "2018-06-19T01:53:37Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![Legacy\_Account1500](https://avatars.discourse-cdn.com/v4/letter/l/ba9def/32.png) [@Legacy\_Account1500](https://community.cybozu.dev/u/Legacy_Account1500)
#### Post date: [2018 年 6 月 19 日午前 1:53 UTC](https://community.cybozu.dev/t/topic/3137/1 "2018-06-19T01:53:37Z")

</div>

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](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’  
});  
}

})();

---

<div class="post-metadata">

### Author: ![Legacy\_Account1657](https://avatars.discourse-cdn.com/v4/letter/l/f4b2a3/32.png) [@Legacy\_Account1657](https://community.cybozu.dev/u/Legacy_Account1657)
#### Post date: [2018 年 6 月 29 日午前 2:59 UTC](https://community.cybozu.dev/t/topic/3137/2 "2018-06-29T02:59:10Z")

</div>

mojitoさん

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

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

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

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

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

&nbsp;

---

<div class="post-metadata">

### Author: ![Legacy\_Account1500](https://avatars.discourse-cdn.com/v4/letter/l/ba9def/32.png) [@Legacy\_Account1500](https://community.cybozu.dev/u/Legacy_Account1500)
#### Post date: [2018 年 6 月 29 日午前 7:51 UTC](https://community.cybozu.dev/t/topic/3137/3 "2018-06-29T07:51:32Z")

</div>

サクラエビさん

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

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

エラー

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

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

&nbsp;

---

<div class="post-metadata">

### Author: ![Legacy\_Account1657](https://avatars.discourse-cdn.com/v4/letter/l/f4b2a3/32.png) [@Legacy\_Account1657](https://community.cybozu.dev/u/Legacy_Account1657)
#### Post date: [2018 年 6 月 30 日午前 7:32 UTC](https://community.cybozu.dev/t/topic/3137/4 "2018-06-30T07:32:52Z")

</div>

mojitoさん

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

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

[https://developer.cybozu.io/hc/ja/articles/202166330](https://developer.cybozu.io/hc/ja/articles/202166330)

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

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