用于获取 3 张门票 3 个条目的抽奖表选项不起作用

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

我有一个 Google 表单,我正在尝试举办慈善抽奖活动。其中一个问题是多项选择:1 张抽奖券 - 20 美元,另一个选项是:3 张抽奖券 - 50 美元。如果有人选择“3 张抽奖券”并提交表格,我需要在我的 Google 表格中输入 3 个对应的条目来表示他们购买的门票数量。

我尝试使用 AI 创建 Apps 脚本,但没有成功。这是我目前拥有的:

function onFormSubmit(e) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var lastRow = sheet.getLastRow();
  var values = sheet.getRange(lastRow, 1, 1, sheet.getLastColumn()).getValues()[0];
  
  var ticketChoice = values[4]; // Assuming ticket choice is in column E
  
  if (ticketChoice.includes("3 Raffle Tickets")) {
    // Add two more rows for 3 Raffle Tickets
    for (var i = 0; i < 2; i++) {
      sheet.appendRow(values);
    }
  }
  // Do nothing for 1 Raffle Ticket as it's already added by form submission
}

我还为此应用程序脚本添加了一个触发器:

  • 选择要运行的函数:onFormSubmit
  • 选择应运行哪个部署:Head
  • 选择事件源:来自电子表格
  • 选择事件类型:表单提交时

在测试表单时,发生的情况如下。当我选择“3 张抽奖券”选项时,它似乎有效: 使用 3 张抽奖券选项进行测试

但是,在下一次测试中,我选择了“1 张抽奖券”选项,结果如下: 使用 1 个抽奖券选项进行测试

如您所见,3张票的原始条目就在那里。然而,当我提交 1 Rafflet Ticket 选项时,它被添加了,但为原来的 3 Ticket 条目添加了另外 2 个条目。任何解决此问题的帮助将不胜感激,以便我们能够按时启动这次慈善抽奖活动。谢谢!

我不是脚本专家,所以我尝试使用 Perplexity AI 来获取工作脚本(见上文),但没有成功。

我预计当有人购买“3 张抽奖券”选项时,Google 表格中会添加 3 个条目,而当有人购买“1 张抽奖券”选项时,Google 表格中会添加 1 个条目。人们可以有多个条目。

更新:我现在已经有了脚本,并且想分享它,以便任何人都可以从中受益。

function onFormSubmit(e) {
  try {
    var sheet = e.range.getSheet();
    var ticketColumnIndex = 5;  // Column E = 5
    
    var ticketOption = e.values[ticketColumnIndex - 1].trim();
    Logger.log("Value retrieved from column: " + ticketOption);
    
    var numTickets = parseInt(ticketOption.match(/\d+/)[0], 10);
    Logger.log("Number of tickets: " + numTickets);
    
    var lastRow = sheet.getLastRow();
    var rowData = e.values;
    
    // Always add the original entry to the end
    sheet.getRange(lastRow + 1, 1, 1, rowData.length).setValues([rowData]);
    
    // Add additional entries for multiple tickets
    if (numTickets > 1) {
      for (var i = 1; i < numTickets; i++) {
        lastRow = sheet.getLastRow();
        sheet.getRange(lastRow + 1, 1, 1, rowData.length).setValues([rowData]);
      }
      Logger.log("Entry successfully duplicated " + (numTickets - 1) + " times and grouped at the end.");
    } else {
      Logger.log("Single ticket entry added at the end.");
    }
    
    // Remove the original entry added by the form
    sheet.deleteRow(e.range.getRow());
    
    // Remove any rows with "No Match" in column A
    var dataRange = sheet.getDataRange();
    var values = dataRange.getValues();
    for (var i = values.length - 1; i >= 0; i--) {
      if (values[i][0].toString().startsWith("No Match")) {
        sheet.deleteRow(i + 1);
      }
    }
    
  } catch (error) {
    Logger.log("Error during form submission processing: " + error);
  }
}
javascript google-sheets google-forms
1个回答
0
投票

请参阅上面我的更新。我能够让脚本运行。与他人分享,希望对其他人有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.