如何使用App脚本读取Google Form数据

时间:2018-08-31 07:39:15

标签: google-apps-script google-form

我是App Script的新手。我正在尝试使用App Script读取提交的数据。我尝试使用here提供的答案,但无法阅读。

我尝试了许多其他方法,但它们也无法正常工作。

function myFunction() {
  var form = FormApp.openById('1_HABIBYRZ-zsEMuzMCnsrAOYFlQSKwaIhmeT1y2SY6Y');
  var formResponses = form.getResponses();

  MailApp.sendEmail ("test@appirio.com", "Form Submited: Foo feedback " + Date.now(), +formResponses);
}

我也想知道如何调试App Script中的任何问题。

预先感谢!

2 个答案:

答案 0 :(得分:2)

上面的另一个答案可能有用,但是有点复杂。为了让您将表单响应保留为程序中的变量(可以通过电子邮件将其发送给您),可以执行以下操作:

 function formResponsesToArray() {
  var app = FormApp.openById(...),
  responses = app.getResponses(), stringResponses = []

  responses.forEach(function(r) {
    var response = []
    r.getItemResponses().forEach(function(i) {
      response.push(i.getResponse())
    })

    stringResponses.push(response)
  })

  Logger.log(stringResponses)
}

这将记录以下一系列响应:

logger window of responses

答案 1 :(得分:0)

我建议这样做的方法是将表单响应输入到Google工作表中,然后通过电子邮件中的附件以csv格式导出。像下面这样。确保正确的API(例如Drive API,Gmail API)处于活动状态非常重要,并在需要时将oauthScopes添加到清单中。


编辑我的答案以推荐斯图尔特答案。更清洁,更简单,更高效。

function ExportToCSVCrntMonth(){
 var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1'); //change this to sheet name
 // Change the below line to get the folder where you want the CSV files stored.
 var folder = DriveApp.createFolder(ss.getName().toLowerCase().replace(/ /g,'_') + '_csv_' + new Date().getTime());
 fileName = ss.getName() + ".csv";
 var csvFile = convertRangeToCsvFileCrnt_(fileName, ss);
 folder.createFile(fileName, csvFile);

 var csvmail = folder.getFilesByName('your sheet name + .csv');
  MailApp.sendEmail({
  to: "your email ere",
  subject: "CSV attached",
  body: "body text",

  attachments: [csvmail.next()]
  });
 }

function convertRangeToCsvFileCrnt_(csvFileName, ss) {
var activeRange = ss.getDataRange();
 try {
   var data = activeRange.getValues();
   var csvFile = undefined;

   if (data.length > 1) {
   var csv = "";
   for (var row = 0; row < data.length; row++) {
    for (var col = 0; col < data[row].length; col++) {
      if (data[row][col].toString().indexOf(",") != -1) {
        data[row][col] = "\"" + data[row][col] + "\"";
       }
      }

    if (row < data.length-1) {
      csv += data[row].join(",") + "\r\n";
    }
    else {
      csv += data[row];
     }
    }
   csvFile = csv;
  }
   return csvFile;
  }
   catch(err) {
   Logger.log(err);
   Browser.msgBox(err);
    }
  }