Экспорт ответов Google Form в Google Cloud SQL - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть настройка формы Google для отправки ответов в базу данных Google SQL после отправки. Я не могу понять, как получить ответы из формы и поместить их в строки. Взгляните:

var address = 'address';
var user = 'sysImporter';
var userPwd = 'password';
var db = 'db';


var dbUrl = 'jdbc:mysql://' + address + '/' + db;


function handleFormSubmit() {
  
 
  var form = FormApp.getActiveForm();
  var formResponses = form.getResponses();
  
  var formResponse0 = formResponses[0];
  var formResponse1 = formResponses[1];
  var formResponse2 = formResponses[2];
  var formResponse3 = formResponses[3];
  var formResponse4 = formResponses[4];
  var formResponse5 = formResponses[5];
  
  var itemResponses0 = formResponse0.getItemResponses();
  var itemResponses1 = formResponse1.getItemResponses();
  var itemResponses2 = formResponse2.getItemResponses();
  var itemResponses3 = formResponse3.getItemResponses();
  var itemResponses4 = formResponse4.getItemResponses();
  var itemResponses5 = formResponse5.getItemResponses();
  
  var itemResponse0 = itemResponses0[0];
  var itemResponse1 = itemResponses1[0];
  var itemResponse2 = itemResponses2[0];
  var itemResponse3 = itemResponses3[0];
  var itemResponse4 = itemResponses4[0];
  var itemResponse5 = itemResponses5[0];
  
  var conn = Jdbc.getConnection(dbUrl, user, userPwd);
  
  var stmt = conn.prepareStatement('INSERT INTO Volunteer '
      + '(FirstName, LastName, PrimaryPhone, SecondaryPhone, VolunteerEmail, Volunteerstatus) values (?, ?, ?, ?, ?, ? )');
  stmt.setString(1, itemResponse1.getResponse());
  stmt.setString(2, itemResponse2.getResponse());
  stmt.setString(3, itemResponse3.getResponse());
  stmt.setString(4, itemResponse4.getResponse());
  stmt.setString(5, itemResponse0.getResponse());
  stmt.setString(6, itemResponse5.getResponse());
  stmt.execute();
 
  
}

Текущая ошибка, которую я получаю:

TypeError: Cannot read property 'getItemResponses' of undefined
at handleFormSubmit(Code:24:38)

1 Ответ

1 голос
/ 24 апреля 2020

getResponse () извлекает все ответы для формы, оттуда вы должны выбрать, какой ответ вы хотите (в моем случае самый последний), и проанализировать его для ответов на вопросы, вот что я закончил:

function handleFormSubmit() {

  //Grab form response list
  var form = FormApp.getActiveForm();
  var formResponses = form.getResponses();
  
  //choose most recent response
  var formLastResponse = formResponses.length - 1;
  //grab items from response
  var response = formResponses[formLastResponse];
  var itemResponses = response.getItemResponses();
  
  //set items to local variables
  var email = response.getRespondentEmail();
  var fname = itemResponses[0].getResponse();
  var lname = itemResponses[1].getResponse();
  var primaryphone = itemResponses[2].getResponse();
  var secondaryphone = itemResponses[3].getResponse();
  var staus = itemResponses[4].getResponse();
  
  //connect to DB
  var conn = Jdbc.getConnection(dbUrl, user, userPwd);

  //send SQL Statment to DB
  var stmt = conn.prepareStatement('INSERT INTO Volunteer '
      + '(FirstName, LastName, PrimaryPhone, SecondaryPhone, VolunteerEmail, Volunteerstatus) values (?, ?, ?, ?, ?, ? )');
  

  stmt.setString(1, fname);
  stmt.setString(2, lname);
  stmt.setString(3, primaryphone);
  stmt.setString(4, secondaryphone);
  stmt.setString(5, email);
  stmt.setString(6, staus);

  stmt.execute();
  
}
...