我可以让Google形成与Google表格链接的多选选项吗?

问题描述 投票:2回答:1

我正在进行无声拍卖。由于该活动是为了慈善活动,因此我不愿意为任何软件付费,因此我尝试在Google中构建合适的软件。

在Google工作表中的工作表“很多”上,我有一个表A1:F11,其中包括标题行。当我收到很多拍卖的捐赠时,此范围将有更多行。

我还设置了一个Google表单,我想链接到我在“手数”表上输入的数据。我想遍历Lots表的每一行,并将B列中的Lot名称添加到表单上的MultipleChoiceItem。

    function myFunction() {

    var form = FormApp.openByUrl(
     'FORM LINK'
     )
    var workbook  = SpreadsheetApp.openByUrl(
     'SHEET LINK')

    var sheet = book.getSheets()[0];

    itemArray = "VALUES FROM SHEET"

    var item = form.addMultipleChoiceItem();
    item.setTitle('Auction Lots')
    .setChoices([

    item.createChoice('ItemArray'),

     ])

     }

我已经编写了上面的代码,但实际上并不知道如何将工作表数据添加到数组中。除此之外,我想将C,D和E列的说明,底价和当前最高出价添加到项目列表中,但希望一旦我清除了第一个障碍,就不会有太大问题了!

我正在尝试的可能吗?

TIA!

google-apps-script google-sheets google-form
1个回答
0
投票

运行一次createOnSubmitTrigger函数以创建将运行用户发送表单响应时的runOnFormSubmit函数:

function runOnFormSubmit(e) {
  //Gets Form and Sheet objects
  var form = FormApp.openByUrl('Form-URL')
  var workbook  = SpreadsheetApp.openByUrl('Spreadsheet-URL')
  var sheet = workbook.getSheets()[0];

  //Gets the user's responses for the multiple choice and bid price questions 
  var formResponse = e.response.getItemResponses();
  var lotsResponse = formResponse[0].getResponse();
  var bidPrice = formResponse[1].getResponse();

  //Uses the selected lot name and finds its row in the sheet
  var selectedLotName = lotsResponse.split(', ')[0];
  var textFinder = sheet.getRange(2, 2, sheet.getLastRow()-1, 1).createTextFinder(selectedLotName).matchCase(true).matchEntireCell(true);
  var highestBidCell = textFinder.findNext().offset(0, 3);

  var highestBid = highestBidCell.getValue();
  if(bidPrice > highestBid) {
    highestBidCell.setValue(bidPrice);    
  }

  var lotsQuestion = formResponse[0].getItem().asMultipleChoiceItem();
  var itemsArray = sheet.getDataRange().getValues();
  itemsArray.shift();
  var choicesArray = [];

  for(var i=0; i<itemsArray.length; i++) {
    var lotName = itemsArray[i][1];
    var description = itemsArray[i][2];
    var reservePrice = itemsArray[i][3];
    var highestBid = itemsArray[i][4];

    var choiceString = lotName + ', ' + description + ', ' + reservePrice + ', ' + highestBid;
    var choice = lotsQuestion.createChoice(choiceString);
    choicesArray.push(choice);
  }

  lotsQuestion.setChoices(choicesArray);  
}

//Creates on form submit trigger
function createOnSubmitTrigger() {
  var form = FormApp.openByUrl('Form-URL');
  ScriptApp.newTrigger('runOnFormSubmit')
  .forForm(form)
  .onFormSubmit()
  .create();
}
© www.soinside.com 2019 - 2024. All rights reserved.