質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

3164閲覧

GoogleAppsScriptで、Googleフォームで回答したらkintoneアプリに新規レコードが作成されるようにしたい

triforest

総合スコア13

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2018/05/10 07:35

編集2018/05/10 07:42

実現させたい要件

Googleフォームで回答したら、kintoneアプリでレコードが新規作成されて、Googleフォームで回答された内容がそのレコードの該当するフィールドに反映される

実装環境

GoogleAppsScript

進捗状況

Googleフォームで回答したら、kintoneアプリでレコードが新規作成されるところまでは実装出来ている。
Googleフォームで回答された内容がそのレコードの該当するフィールドに反映されるところが実装できておらず、解決策が見いだせない。

#相談事項
コードでいうとif (title == '休日')の部分から不具合が起きている。休日という質問項目の回答結果の値は取得できるが、else if (title == '勤務先')の勤務先という質問項目の回答結果の値が取得できない(GASのログを見ると以下のようになっており、勤務先の回答結果が取得できていない)

[18-05-10 00:27:54:747 PDT] Form submitted
[18-05-10 00:27:54:803 PDT] Response JSON is "[{"休日" : { "value": ["月","火","水"] },}]"
[18-05-10 00:27:55:645 PDT] Response code is "200.0"

if (title == '休日')からelse if (title == '勤務先')前までの部分で宣言した変数などが原因かと思われますが、こちら原因についてアドバイス頂ければ幸いです。

コード

// アンケートの回答を取得する関数 function getFormResponse(e) { 'use strict'; // アンケートの回答を取得する var itemResponses = e.response.getItemResponses(); // KINTONEへ送信するためのデータを作成 var records = '[{'; for (var i = 0; i < itemResponses.length; i++) { var itemResponse = itemResponses[i]; var title = itemResponse.getItem().getTitle(); if (title == '休日'){ var checkboxValues = []; var responses = itemResponse.getResponse(); for (var i = 0; i < responses.length; i++){ checkboxValues.push('"'+responses[i]+'"'); } records += Utilities.formatString('"休日" : { "value": ' + '[' + checkboxValues + ']' + ' }' +',',responses); } else if (title == '勤務先') { records += Utilities.formatString('"勤務先" : { "value": "%s" }', itemResponse.getResponse()); }; } records += '}]'; Logger.log('Response JSON is "%s"', records); return records; } // kintoneに値を送る関数 function sendToKintone(e) { 'use strict'; Logger.log('Form submitted'); var subdomain = '(サブドメイン名)'; var apps = { YOUR_APPLICATION1: { appid: (id), name: '(アプリ名)', token: '(token)' } }; var manager = new KintoneManager.KintoneManager(subdomain, apps);// ライブラリーの初期化 var str = getFormResponse(e); str = str.replace(/\n/g, "\n").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); }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

単純なケアレスミスでしょうか?
for文中のfor文をよくご確認ください。
インデックス用の変数の文字を変えればよいかと。

Javascript

1for (var i = 0; i < responses.length; i++){ 2//   ↑ここ

投稿2018/05/10 14:34

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

triforest

2018/05/11 01:22

ご回答ありがとうございます。 >インデックス用の変数の文字を変えればよいかと こちら具体的にはどのように変える必要がありそうでしょうか?
triforest

2018/05/11 01:40 編集

あ、 for (var i in itemResponses) { にしたら要件満たせました!! itemResponsesに質問項目の値が1つしか取得できてなかったことが原因ですね。。
退会済みユーザー

退会済みユーザー

2018/05/11 01:55

んー、違いますね。 for文中のfor文で「i」を上書きしていますよね? ご提示のコードでは単純に「i」を「j」や「k」など任意の文字に変更すれば良いです。 ※蛇足ですが、初心者申請はしておいたほうが良いです。
triforest

2018/05/11 07:41

>for文中のfor文で「i」を上書きしていますよね? そういうことでしたか。。ありがとうございます。 初心者申請しておきますm(__)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問