Gsuiteフォームとの連携がうまくいかない

kinntone側にレコード登録されないのですが、

間違っている箇所はございますでしょうか。

 

お知恵をお借りできますと幸いです。

 

function getFormResponse(e) {
‘use strict’;
var itemResponses = e.response.getItemResponses();//フォームの入力内容を取得
var records = ‘[’;
for (var i = 0; i < itemResponses.length; i++) {
var itemResponse = itemResponses[i];
switch (itemResponse.getItem().getTitle()) {
case “メールアドレス”:
records += Utilities.formatString(‘,“メールアドレス” : { “value”: “%s” }’,
itemResponse.getResponse());//質問に対する回答を取得
break;
case “お名前”:
records += Utilities.formatString(‘,“お名前” : { “value”: “%s” }’,
itemResponse.getResponse());//質問に対する回答を取得
break;
case “フリガナ”:
records += Utilities.formatString(‘,“フリガナ” : { “value”: “%s” }’,
itemResponse.getResponse());//質問に対する回答を取得
break;
case “ご住所”:
records += Utilities.formatString(‘,“ご住所” : { “value”: “%s” }’,
itemResponse.getResponse());//質問に対する回答を取得
break;
case “電話番号”:
records += Utilities.formatString(‘,“電話番号” : { “value”: “%s” }’,
itemResponse.getResponse());//質問に対する回答を取得
break;
}
}
records += ‘}]’;
Logger.log(‘Response JSON is “%s”’, records);
return records;
}

function sendToKintone(e) {
‘use strict’;
Logger.log(‘Form submitted’);
var subdomain = ‘サブドメイン’;//サブドメイン名
var apps = {
“YOUR_APPLICATION1”: { appid:アプリID, name: ‘アプリ名’, token: ‘トークンID’ }
};
var manager = new KintoneManager.KintoneManager(subdomain, apps);// ライブラリーの初期化
var str = getFormResponse(e);
str = str.replace(//g, "").replace(/\r/g, “\r”).replace(/\t/g, “\t”);
var records = JSON.parse(‘“str”’);//JSON形式に変換
var response = manager.create(“YOUR_APPLICATION1”, records);//kintone レコードの生成
// ステータスコード
// 成功すれば200になる
var code = response.getResponseCode();
Logger.log(‘Response code is “%s”’, code);
}

メールアドレスのところを、

case "メールアドレス":
records += Utilities.formatString('{"メールアドレス" : { "value": "%s" }',

にしてみてください。

また、エラー内容などがあれば回答がしやすいので記載したほうがいいです。

TK様

 

早速ご対応頂きましてありがとうございます。

 

フォーム回答送信後、特にエラーが出ないのですが、Kintone側にレコード登録されない状態でございます。

 

ご指摘頂いた箇所を修正し、フォーム送信を実施したのですが、

同様にエラーはなく、レコード登録されない状況でございます。

アプリ側のフィールド設定とかが原因かもしれませんねー。

アプリのフィールドは全部文字列1行でしょうか?

TK様

アプリ側のフィールドは文字列1行で作成しています。

うーむ・・コード自体は大丈夫だと思うのですが・・・

フォームを送信した後、成功していたらこういうLogが出るんですがどうでしょうか?

ログ表示されました。

 

ステータスが400なのでリクエスト失敗してるっぽいですね

すいませんがもう一度、現時点のコードを張っていただいていいでしょうか?

何度もご確認頂きありがとうございます。

サブドメイン名とアプリケーション名とトークンの記載は控えてあります。

function getFormResponse(e) {
‘use strict’;
var itemResponses = e.response.getItemResponses();//フォームの入力内容を取得
var records = ‘[’;
for (var i = 0; i < itemResponses.length; i++) {
var itemResponse = itemResponses[i];
switch (itemResponse.getItem().getTitle()) {
case “メールアドレス”:
records += Utilities.formatString(‘{“メールアドレス” : { “value”: “%s” }’,
itemResponse.getResponse());//質問に対する回答を取得
break;
case “お名前”:
records += Utilities.formatString(‘{“お名前” : { “value”: “%s” }’,
itemResponse.getResponse());//質問に対する回答を取得
break;
case “フリガナ”:
records += Utilities.formatString(‘{“フリガナ” : { “value”: “%s” }’,
itemResponse.getResponse());//質問に対する回答を取得
break;
case “ご住所”:
records += Utilities.formatString(‘{“ご住所” : { “value”: “%s” }’,
itemResponse.getResponse());//質問に対する回答を取得
break;
case “電話番号”:
records += Utilities.formatString(‘{“電話番号” : { “value”: “%s” }’,
itemResponse.getResponse());//質問に対する回答を取得
break;
}
}
records += ‘}]’;
Logger.log(‘Response JSON is “%s”’, records);
return records;
}

function sendToKintone(e) {
‘use strict’;
Logger.log(‘Form submitted’);
var subdomain = ‘subdomain’;//サブドメイン名
var apps = {
“YOUR_APPLICATION1”: { appid:41, name: ‘アプリケーション名’, token: ‘トークンID’ }
};
var manager = new KintoneManager.KintoneManager(subdomain, apps);// ライブラリーの初期化
var str = getFormResponse(e);
str = str.replace(//g, "").replace(/\r/g, “\r”).replace(/\t/g, “\t”);
var records = JSON.parse(‘“str”’);//JSON形式に変換
var response = manager.create(“YOUR_APPLICATION1”, records);//kintone レコードの生成
// ステータスコード
// 成功すれば200になる
var code = response.getResponseCode();
Logger.log(‘Response code is “%s”’, code);
}

ありがとうございます。

多少手を加えましたので、そのままコピーしてからドメインやTokenを変更して試していただきたいです。

function getFormResponse(e) {

'use strict';

var itemResponses = e.response.getItemResponses();//フォームの入力内容を取得

var records = '[';

for (var i = 0; i < itemResponses.length; i++) {

var itemResponse = itemResponses[i];

switch (itemResponse.getItem().getTitle()) {

case "メールアドレス":

records += Utilities.formatString('{"メールアドレス" : { "value": "%s" }',

itemResponse.getResponse());//質問に対する回答を取得

break;

case "お名前":

records += Utilities.formatString(',"お名前" : { "value": "%s" }',

itemResponse.getResponse());//質問に対する回答を取得

break;

case "フリガナ":

records += Utilities.formatString(',"フリガナ" : { "value": "%s" }',

itemResponse.getResponse());//質問に対する回答を取得

break;

case "ご住所":

records += Utilities.formatString(',"ご住所" : { "value": "%s" }',

itemResponse.getResponse());//質問に対する回答を取得

break;

case "電話番号":

records += Utilities.formatString(',"電話番号" : { "value": "%s" }',

itemResponse.getResponse());//質問に対する回答を取得

break;

}

}

records += '}]';

Logger.log('Response JSON is "%s"', records);

return records;

}

function sendToKintone(e) {

'use strict';

Logger.log('Form submitted');

var subdomain = 'subdomain';//サブドメイン名

var apps = {

"YOUR_APPLICATION1": { appid: 41, name: 'アプリケーション名', token: 'トークンID' }

};

var manager = new KintoneManager.KintoneManager(subdomain, apps);// ライブラリーの初期化

var str = getFormResponse(e);

str = str.replace(//g, "\").replace(/\r/g, "\\r").replace(/\t/g, "\\t");

var records = JSON.parse('"str"');//JSON形式に変換

var response = manager.create("YOUR_APPLICATION1", records);//kintone レコードの生成

// ステータスコード

// 成功すれば200になる

var code = response.getResponseCode();

Logger.log('Response code is "%s"', code);

}

 

 

TK様

 

修正頂きましてありがとうございます。

 

修正頂いたコードを利用したのですが、同じく400でした。

 

Kintone側の設定も見返してみます。

だめでしたか・・・

うーんどこが原因なんでしょうか・・

お役に立てずすいませんでした!

仕事が忙しく投稿が遅れましたが、私も未だにkintone側へはデータ挿入はできません。

Response code is “401.0” というエラー

回答送信後は、以下のエラー

Uncaught Could not establish connection. Receiving end does not exist.

認証まわりもごく検討しているつもりですが、本当にできるのでしょうか?