の記事を元に、見様見真似で作成したのですが、Kintoneに反映されません。
お知恵を頂けないでしょうか。
~~~
function getFormResponse(e) { 'use strict'; var itemResponses = e.response.getItemResponses();// アンケートの回答を取得 var records = '['; records += Utilities.formatString('{"Email": { "value": "%s" }', e.response.getRespondentEmail());// 回答者のEmailアドレスの取得 for (var i = 0; i < itemResponses.length; i++) { var itemResponse = itemResponses[i]; switch (itemResponse.getItem().getTitle()) { case 'お名前(フルネーム)': records += Utilities.formatString(',"文字列__1行__0" : { "value": "%s" }', itemResponse.getResponse());// 質問に対する回答を取得 break; case '会社名および部署名(所属)': records += Utilities.formatString(',"文字列__1行__1" : { "value": "%s" }', itemResponse.getResponse());// 質問に対する回答を取得 break; case '掲載(放送)予定媒体': records += Utilities.formatString(',"文字列__1行__4" : { "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 = '{●●●●-pr}.cybozu.com';// サブドメイン名 var apps = { YOUR_APPLICATION1: {appid: 4, name: 'kintone Meetup 参加者', token: '6p2azDdMxxWeBCS1ywfYO23Rse1qZJMNwVL13JU2'} }; 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); }
10件のコメント
小嶋さん、こんにちは。
何かエラーメッセージは出ていますでしょうか?
ログを確認する方法は、次の投稿が参考になると思います。
https://developer.cybozu.io/hc/ja/community/posts/360060227692
sio様
エラー
ReferenceError: manager is not defined
getFormResponse @ コード.gs:3
と出ました。ググっても分からず、、、よろしくお願いいたします。
小嶋 様
manager が定義されていない、とのエラーになると思いますが、
記事35行目の通り、manager は定義されていますでしょうか。
また、念のためですが、subdomainを記載する際に、サンプルコードにあった{}の記載は必要ありません。
function getFormResponse(e)
側に
Logger.log('response=> "%s"', response);
を入れてしまっていたため、function sendToKintone(e) 側(44行目)に入れました。
そうしましたところ、
TypeError: Cannot read property 'response' of undefined
getFormResponse @ コード.gs:3
というエラーが表示されております。よろしくお願いします。
小嶋 様
こちらの投稿の通り、記事サンプルコードの39行目の次に
Logger.log('response=> "%s"', response); を追記すると、ログが正常に出力されるかと思います。
また、最初に共有していただいたコードで試してみましたが、
自分の環境では、kintoneに回答が正常に反映されました。
認証情報やkintoneのフィールドの指定などに、間違いがないかを確認してみると良いかもしれません。
重ねてお手間をおかけし恐縮です。
試したところ、同じエラー(TypeError: Cannot read property 'response' of undefined)が出てしまいました。
以下、38~44行目の部分です。
TypeError: Cannot read property 'response' of undefined は
undefined
のプロパティ 'response' が読み取れないというエラーなので、Google フォームの回答(e) を取得できていないように見えます。
Google Apps Scriptのエディタから直接コードを実行するのではなく、
記事の「5. プログラムの作成>Step 12」のトリガーを設定した上で、
「6. 動作の確認」の通りにフォームの送信を行ったでしょうか。
遅くなりました。フォームからの送信を行い、GASの左側メニューの「実行数」のところを見たところ、以下の記述がありました。
ご確認いただけますでしょうか(一部伏せ字にしています)。
エラーメッセージを見る限り、「日付」と「文字列__1行__6」の2つのフィールドはkintone上で必須項目に設定されていますが、
Googleフォームの項目には含まれていないため、必須項目が空の状態でレコードを登録できず、エラーが出ているように見えます。
「日付」と「文字列__1行__6」フィールドの「必須項目にする」チェックを外す、
もしくは上記2つのフィールドを、Googleフォームの必須項目として追加するのはいかがでしょうか?
ありがとうございます。ここのエラーはKintone側のものだったのですね。必須項目を外したところ、登録されました!
ありがとうございました。今回はテストで一部項目のみをGASに書きましたので、日付など残りの項目もフォーム上に追加していきたいと思います。本当にありがとうございました。