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

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

ただいまの
回答率

90.82%

  • JavaScript

    14321questions

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

  • Google Apps Script

    630questions

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

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

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 105

triforest

score 4

 実現させたい要件

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);
}
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/11 10:22

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

    キャンセル

  • 2018/05/11 10:40 編集

    あ、
    for (var i in itemResponses) {
    にしたら要件満たせました!!

    itemResponsesに質問項目の値が1つしか取得できてなかったことが原因ですね。。

    キャンセル

  • 2018/05/11 10:55

    んー、違いますね。
    for文中のfor文で「i」を上書きしていますよね?
    ご提示のコードでは単純に「i」を「j」や「k」など任意の文字に変更すれば良いです。

    ※蛇足ですが、初心者申請はしておいたほうが良いです。

    キャンセル

  • 2018/05/11 16:41

    >for文中のfor文で「i」を上書きしていますよね?
    そういうことでしたか。。ありがとうございます。

    初心者申請しておきますm(__)m

    キャンセル

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

  • ただいまの回答率 90.82%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • JavaScript

    14321questions

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

  • Google Apps Script

    630questions

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