【问题标题】:Adding a lot of responses with google apps script使用谷歌应用脚​​本添加大量响应
【发布时间】:2017-07-12 05:57:01
【问题描述】:

我想制作一个脚本,将添加大量(大约 1500 份)简历和候选人信息作为对表单的回复。我有一个谷歌电子表格的信息。我将它链接到表单,但我只能管理响应。即使我更改电子表格(或添加),表单中也不会发生更新。我正在添加行,但没有添加任何响应。那可能吗?我看到了 2-3 个关于此的问题,但它们已经过时了,我仍在努力寻找答案。这是我的实习项目,我的时间不多了。提前致谢。

【问题讨论】:

  • 所以您关心表单中可见的响应统计信息?
  • 不。我想通过 Form&Sheet API 添加响应。我有 1500 行信息,每一行都必须是响应。我需要将它们添加为响应,但我没有亲自动手,而是编写了一个程序。我将工作表链接到表格。但我无法将这些行添加为响应。
  • 如果您发布您的代码,那么人们可以帮助将两者联系起来,或者找出您所拥有的代码不起作用的原因。

标签: google-apps-script google-sheets google-forms


【解决方案1】:

例如,您可以将答案上传到电子表格,将它们放入数组中并通过FormResponce 对象提交(为此您需要使用Form#createResponse)。

我没有测试这段代码,但据我了解,这样的东西应该适合你。

var ANSWER_SHEET_ID = "xxx";
var FORM_ID = "yyy";

function myFunction() {
  const answers = SpreadsheetApp.openById(ANSWERS_SHEET_ID)
                       .getSheetByName('answers')  //Let's say that sheet is named
                       .getRange(answerSheet.getLastRow(), answerSheet.getLastColumn())
                       .getValues() //get it as the Array
                       .slice(1); //slice the header row if it exists in your answer_sheet

  const form = FormApp.openById(FORM_ID);

  const formResponse = form.createResponse();
  const items = form.getItems();

  for(var i=0, len=answers.length; i<len; ++i){
    //you have to define types of your Items like this
    formResponse.withItemResponse(items[0].asTextItem().createResponse(answers[i][0])) //for Text Item
                .withItemResponse(items[1].asMultipleChoiceItem().createResponse(answers[i][1])) //Multiple Choice Item
                .withItemResponse(items[2].asScaleItem().createResponse(parseInt(answers[i][2]))) //for Scale Item !! requires integer as a response
                .submit();
  }
}

请注意,有些项目需要 Integer 作为响应,而其他项目需要 String 等。

【讨论】:

  • 成功了吗?我的工作表中有近 60 件物品,我为每个人都试过了。已添加响应,但字段为空。但是,您仍然解决了真正的问题!非常感谢。
  • @Kristianth,与我们分享您的脚本 =) 我们会看看发生了什么)
【解决方案2】:

感谢你们,我可以添加一个项目作为回复。这对我来说是一个很好的开始!这是我写的代码:

const answers = sheet.getSheetValues(2, 2, sheet.getLastRow()-2, sheet.getLastColumn()-2);


var formResponse = new Array(answers.length);
for(var i =0; i < answers.length; ++i)
formResponse[i] = form.createResponse();

const items = form.getItems();

for(var i=0, len=answers.length; i<len; ++i){

   formResponse[i]
   .withItemResponse(items[1].asDateItem().createResponse(answers[i][0]))
   .withItemResponse(items[2].asTextItem().createResponse(answers[i][1]))
   .withItemResponse(items[3].asTextItem().createResponse(answers[i][2]))
   .withItemResponse(items[4].asTextItem().createResponse(answers[i][3]))
   .withItemResponse(items[5].asTextItem().createResponse(answers[i][4]))
   .withItemResponse(items[6].asDateItem().createResponse(answers[i][5]))
   .withItemResponse(items[7].asParagraphTextItem().createResponse(answers[i][6]))
   .withItemResponse(items[8].asTextItem().createResponse(answers[i][7]))
   .withItemResponse(items[9].asTextItem().createResponse(answers[i][8]))
   .withItemResponse(items[10].asListItem().createResponse(answers[i][9]))
   .withItemResponse(items[11].asListItem().createResponse(answers[i][10]))

   .withItemResponse(items[12].asParagraphTextItem().createResponse(answers[i][11]))
   .withItemResponse(items[13].asParagraphTextItem().createResponse(answers[i][12]))
   .withItemResponse(items[14].asParagraphTextItem().createResponse(answers[i][13]))
   .withItemResponse(items[15].asParagraphTextItem().createResponse(answers[i][14]))
   .withItemResponse(items[16].asParagraphTextItem().createResponse(answers[i][15]))

   .withItemResponse(items[18].asTextItem().createResponse(answers[i][16]))

   //.withItemResponse(items[19].asCheckboxItem().createResponse(answers[i][17]))

   .withItemResponse(items[21].asTextItem().createResponse(answers[i][18]))
   .withItemResponse(items[22].asListItem().createResponse(answers[i][19]))
   .withItemResponse(items[23].asTextItem().createResponse(answers[i][20]))
   .withItemResponse(items[24].asListItem().createResponse(answers[i][21]))
   .withItemResponse(items[25].asTextItem().createResponse(answers[i][22]))
   .withItemResponse(items[26].asListItem().createResponse(answers[i][23]))

   .withItemResponse(items[28].asTextItem().createResponse(answers[i][24]))
   .withItemResponse(items[29].asTextItem().createResponse(answers[i][25]))
   .withItemResponse(items[30].asTextItem().createResponse(answers[i][26]))
   .withItemResponse(items[31].asTextItem().createResponse(answers[i][27]))
   .withItemResponse(items[32].asTextItem().createResponse(answers[i][28]))
   .withItemResponse(items[33].asTextItem().createResponse(answers[i][29]))

   .withItemResponse(items[35].asTextItem().createResponse(answers[i][30]))
   .withItemResponse(items[36].asParagraphTextItem().createResponse(answers[i][31]))       
   .withItemResponse(items[37].asParagraphTextItem().createResponse(answers[i][32]))
   .withItemResponse(items[38].asParagraphTextItem().createResponse(answers[i][33]))



   .withItemResponse(items[40].asTextItem().createResponse(answers[i][34]))
   .withItemResponse(items[41].asListItem().createResponse(answers[i][35]))
   .withItemResponse(items[42].asParagraphTextItem().createResponse(answers[i][36]))

   .withItemResponse(items[44].asDateItem().createResponse(answers[i][37]))
   .withItemResponse(items[45].asTextItem().createResponse(answers[i][38]))
   .withItemResponse(items[46].asParagraphTextItem().createResponse(answers[i][39]))

   .withItemResponse(items[48].asDateItem().createResponse(answers[i][40]))
   .withItemResponse(items[49].asTextItem().createResponse(answers[i][41]))
   .withItemResponse(items[50].asParagraphTextItem().createResponse(answers[i][42]))

   .withItemResponse(items[52].asDateItem().createResponse(answers[i][43]))
   .withItemResponse(items[53].asTextItem().createResponse(answers[i][44]))
   .withItemResponse(items[54].asParagraphTextItem().createResponse(answers[i][45]))

   .withItemResponse(items[55].asTextItem().createResponse(answers[i][47]))
   .withItemResponse(items[56].asParagraphTextItem().createResponse(answers[i][48]))
   .withItemResponse(items[57].asParagraphTextItem().createResponse(answers[i][49]))
   .withItemResponse(items[58].asTextItem().createResponse(answers[i][50]))
   .withItemResponse(items[59].asTextItem().createResponse(answers[i][51]))
   .withItemResponse(items[60].asTextItem().createResponse(answers[i][52])) 
   .submit();

}

我照鲁道夫说的做了。谢谢您的帮助。如果有人知道添加更多的回复,我将非常感激。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-18
    • 1970-01-01
    • 2016-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多