在谷歌应用程序脚本中创建脚本以启动谷歌表单

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

我正在尝试创建一个脚本,如果您将 D 列中的值从空白更改为“Create Something”,它将启动一个 google 表单。

我尝试了这段代码,但没有任何反应。还编辑了触发按钮,但没有任何反应。

function onEdit(e) {
  var sheet = e.source.getSheetByName('Sheet1'); // Replace 'YourSheetName' with the actual name of your sheet
  var columnDIndex = 15; // Column D is the 4th column (1-indexed)

  if (e.range.getColumn() == columnDIndex && e.value == 'Create Something') {
    openGoogleForm();
  }
}

function openGoogleForm() {
  var formUrl = 'https://docs.google.com/forms/d/yourid'; // Replace 'your-form-id' with the actual ID of your form
  var form = FormApp.openByUrl(formUrl);
  form.createResponse().submit();
}
javascript java google-apps-script google-apps
1个回答
0
投票

我相信您的目标如下。

  • 当“Sheet1”的“D”列中输入
    Create Something
    的值时,您要打开Google Form。

修改要点:

  • 我认为
    var columnDIndex = 15; // Column D is the 4th column (1-indexed)
    e.range.getColumn() == columnDIndex
    表示“O”列。
  • e.value == 'Create Something'
    的情况下,当通过复制和粘贴来放置
    Create Something
    的值时,
    e.value
    的值没有值。请注意这一点。
  • 为了打开 HTML,需要使用可安装的 OnEdit 触发器而不是简单触发器。

当这些要点反映在示例脚本中时,就会变成如下所示。

示例脚本:

请将以下脚本复制并粘贴到 Google 电子表格的脚本编辑器中并保存脚本。并且,请将 OnEdit 触发器安装到函数

installedOnEdit
参考

并且,请将您的 Google 表单 URL 设置为

formUrl

并且,请确认您的工作表名称。在此示例中,当将

Create Something
值放入“Sheet1”的“D”列时,脚本将起作用。请注意这一点。

function installedOnEdit(e) {
  var { range, value } = e;
  var sheet = range.getSheet();
  if (sheet.getSheetName() == "Sheet1" && range.columnStart == 4 && !range.isBlank()) { // or if (sheet.getSheetName() == "Sheet1" && range.columnStart == 4 && (value == 'Create Something' || range.getValue() == 'Create Something')) {
    var formUrl = 'https://docs.google.com/forms/d/{formId}/edit'; // Please set your Google Form URL.
    var form = FormApp.openByUrl(formUrl);
    form.getPublishedUrl();
    var script = `<script>window.open('${form.getPublishedUrl()}', '_blank').focus();google.script.host.close();</script>`;
    var html = HtmlService.createHtmlOutput(script);
    SpreadsheetApp.getUi().showModalDialog(html, 'sample');
  }
}
  • 当您将

    Create Something
    的值放入“Sheet1”的“D”列时,将打开一个 Google 表单。

  • 在此示例中,为了打开 Google 表单,在对话框中使用了 Javascript。

  • 在此示例中,打开公共 URL 的 Google 表单。如果你想直接打开Google Form请修改上面的脚本如下。

    function installedOnEdit(e) {
      var { range, value } = e;
      var sheet = range.getSheet();
      if (sheet.getSheetName() == "Sheet1" && range.columnStart == 4 && !range.isBlank()) { // or if (sheet.getSheetName() == "Sheet1" && range.columnStart == 4 && (value == 'Create Something' || range.getValue() == 'Create Something')) {
        var formUrl = 'https://docs.google.com/forms/d/{formId}/edit'; // Please set your Google Form URL.
        var script = `<script>window.open('${formUrl}', '_blank').focus();google.script.host.close();</script>`;
        var html = HtmlService.createHtmlOutput(script);
        SpreadsheetApp.getUi().showModalDialog(html, 'sample');
      }
    }
    
  • 如果您不想查看工作表名称,请删除

    sheet.getSheetName() == "Sheet1" && 

参考资料:

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