Google表单应用脚本;无法获取表单响应数据

时间:2018-05-05 15:04:25

标签: google-apps-script

我想我遇到了一个错误?我在google工作表中有一个脚本,它会获得提交的Google表单值并将它们放入google doc表中。

我已将我的代码迁移到Google表单,在提交后,它似乎无法获取我输入的数据。

    Map<String,String> variableReplaceMap = new HashMap<>();
    Map<String, String> textContent = readTextContentAfterDBExtractionToFillUpTemplate();
    ObjectFactory factory = Context.getWmlObjectFactory();
    P para = factory.createP();
    R rspc = factory.createR();

    String power= textContent.get("Power & Energy");
    String[] powerWithNewLine = skills.split("\\\\n");
    for (String eachLineOfPower : powerWithNewLine) {

        Text eachLineOfPowerTxt = factory.createText();
        eachLineOfPowerTxt .setValue( eachLineOfPower );
        rspc.getContent().add( eachLineOfPowerTxt );
        Br br = factory.createBr(); 
        rspc.getContent().add(br);
        para.getParagraphContent().add(rspc);
        documentPart.addObject(para);
    }
    String str = "";
    for (Object eachLineOfPgrph : para.getParagraphContent()) {
        str = str + eachLineOfPgrph;
    }
    variableReplaceMap.put("POWER", str);
    return variableReplaceMap;

作为调试过程的一部分,我发现这是错误,这要归功于以下代码:

function doTheWork(e) {  
  var timeStamp = String(e.values[0]);  
  var entryEmail = String(e.values[1]);
  var name = String(e.values[2]);
  var number = String(e.values[3]);

  var cells = [timeStamp, entryEmail, name, number];
};

基本上,手动添加字符串有效。但我需要它从表格中获取数据。

1 个答案:

答案 0 :(得分:0)

我正在回答这些问题,因为虽然上面评论中的链接让我走上正轨,但我确实花了一些时间来理解文档的含义。

以下是解决方案:

// Get the for - You could alternatively open by id.
var form = FormApp.getActiveForm();

// Get responses
var formResponses = form.getResponses();

// Loop through the filled out form to gather all of the responses
for (var i = 0; i < formResponses.length; i++) {
  // Prepare the array
  var formResponse = formResponses[i];
  // Just FYI I got the response URL because it was handy for my situation. It is not necessary code but I if anyone else gets stuck the way I did, hopefully this helps
  var editUrl = String(formResponse.getEditResponseUrl());
  var itemResponses = formResponse.getItemResponses();
  // My form had two fields for this test. Name & Number. Here is how I was able to access the answers.
  var name = itemResponses[0].getResponse();
  var number = itemResponses[1].getResponse();
}