You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Google Apps Script生成的Google Forms链接转为可点击超链接

实现Google Sheets生成测验表单后自动添加可点击超链接

方案1:将可点击链接写入Sheet指定单元格(最简单)

直接在脚本末尾添加代码,把超链接插入到Sheet的固定单元格(示例用H1),用户打开Sheet即可点击访问,无需复制链接。

修改后的完整脚本

function createQuizFromSheet() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getActiveSheet();
  const sheetName = sheet.getName();

  // 获取数据,跳过表头行
  const data = sheet.getDataRange().getValues().slice(1);

  // 过滤掉F列(正确答案)为空的行
  const validQuestions = data.filter((row) => row[5]);

  if (validQuestions.length === 0) {
    Logger.log("未在F列找到指定正确答案的题目。");
    SpreadsheetApp.getUi().alert("未在F列找到指定正确答案的题目。");
    return;
  }

  // 计算每题分值
  const totalPoints = 100;
  const pointsPerQuestion = totalPoints / validQuestions.length;

  const form = FormApp.create(sheetName);
  form.setIsQuiz(true);

  validQuestions.forEach((row) => {
    const questionTitle = row[0];
    const choices = [row[1], row[2], row[3], row[4]]; // B到E列
    const correctAnswerLetter = row[5].toUpperCase(); // 从F列获取正确答案字母

    const item = form.addMultipleChoiceItem();
    item.setTitle(questionTitle).setPoints(pointsPerQuestion);

    const formChoices = choices.map((choiceValue) => {
      // 匹配正确答案:字母对应选项索引(A对应第1个选项,B对应第2个,以此类推)
      const isCorrect = ["A", "B", "C", "D"].indexOf(correctAnswerLetter) === choices.indexOf(choiceValue);
      return item.createChoice(choiceValue, isCorrect);
    });

    item.setChoices(formChoices);

    // 更新Sheet中对应行的数据
    const rowIndex = data.indexOf(row) + 2; // +2 抵消表头和0索引的偏差
    sheet.getRange(rowIndex, 1).setValue(questionTitle);
    sheet.getRange(rowIndex, 2).setValue(row[1]);
    sheet.getRange(rowIndex, 3).setValue(row[2]);
    sheet.getRange(rowIndex, 4).setValue(row[3]);
    sheet.getRange(rowIndex, 5).setValue(row[4]);
    sheet.getRange(rowIndex, 7).setValue(pointsPerQuestion);
  });

  const formUrl = form.getPublishedUrl();
  Logger.log("测验表单已生成:" + formUrl);
  
  // 新增:将可点击超链接写入H1单元格
  const linkCell = sheet.getRange("H1");
  linkCell.setFormula(`=HYPERLINK("${formUrl}", "点击打开生成的测验表单")`);
  
  // 修改提示信息
  SpreadsheetApp.getUi().alert("测验表单已生成!可点击链接已添加到H1单元格。");
}

关键修改说明

  1. 修正原脚本的有效题目过滤逻辑:原脚本错误使用row[6](对应G列)判断正确答案是否为空,实际应使用row[5](对应F列)。
  2. 修正原脚本的正确答案匹配逻辑:原脚本直接将选项内容与答案字母对比(比如"苹果"和"A"),现在改为通过字母映射选项索引实现正确匹配。
  3. 新增超链接写入逻辑:用HYPERLINK公式在H1单元格生成可点击链接,避免复制粘贴操作。
  4. 更新弹窗提示,明确告知用户链接位置。

方案2:用自定义弹窗显示可点击链接

如果不想修改Sheet内容,可以创建带超链接的自定义弹窗,用户点击弹窗内的链接即可直接打开表单。

修改脚本末尾部分

替换原脚本最后三行:

const formUrl = form.getPublishedUrl();
Logger.log("Quiz created: " + formUrl);
SpreadsheetApp.getUi().alert("Quiz created: " + formUrl);

为以下代码:

const formUrl = form.getPublishedUrl();
Logger.log("测验表单已生成:" + formUrl);

// 创建自定义HTML弹窗显示可点击链接
const html = HtmlService.createHtmlOutput(`
  <style>
    body { padding: 20px; font-family: Arial, sans-serif; }
    a { color: #1a73e8; text-decoration: none; font-weight: bold; }
    a:hover { text-decoration: underline; }
  </style>
  <p>测验表单已成功生成!</p>
  <p><a href="${formUrl}" target="_blank">点击打开测验表单</a></p>
`).setWidth(350).setHeight(180);
SpreadsheetApp.getUi().showModalDialog(html, "生成完成");

效果说明

运行脚本后会弹出一个定制窗口,窗口内的链接可直接点击,点击后将在新浏览器标签页打开生成的Google Forms测验。


内容的提问来源于stack exchange,提问作者Robert Mcleod

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 12:14:51