当前位置: 首页 > 知识库问答 >
问题:

如何更改Google Apps Script中Google Form响应的工作表名称?

何烨华
2023-03-14

谷歌主表单的副本通过电子邮件发送给团体。当每个小组的一名成员完成表单时,响应将发送到谷歌电子表格中的一张工作表。如果有10组,电子表格中将有10张表格。

每个工作表的名称默认为表单响应1、表单响应2、表单响应3。。。等

如何将表单响应表名称更改为组的名称。

以下是我的尝试。

 var form = FormApp.openById(copyForm.getId());
 var formLink = form.getPublishedUrl();
 var masterSpreadsheet = SpreadsheetApp.openById("ID");

 form.setDestination(FormApp.DestinationType.SPREADSHEET, masterSpreadsheet.getId());

 var sheets = masterSpreadsheet.getSheets(); 
 
 for(var i = 0; i < sheets.length; i++) {
    if(sheets[i].getFormUrl() == formLink) {
      sheets[i].setName("Group Name");
    }
  }

它在电子表格中新添加的工作表之前重命名工作表。

提前谢谢。

共有3个答案

钱嘉致
2023-03-14

您可能需要调用SpreadsheetApp.flush()以确保getSheets返回的电子表格列表完整。还有一个更简单的方法,测试电子表格的名称,或者假设索引0是您想要重命名的电子表格。

var form = FormApp.openById(copyForm.getId());
var formLink = form.getPublishedUrl();
var masterSpreadsheet = SpreadsheetApp.openById("ID");

form.setDestination(FormApp.DestinationType.SPREADSHEET, masterSpreadsheet.getId());
 
// Flush changes
SpreadsheetApp.flush();

var sheets = masterSpreadsheet.getSheets(); 

for(var i = 0; i < sheets.length; i++) {
  if(sheets[i].getFormUrl() == formLink) {
    sheets[i].setName("Group Name");
  }
}
殳越
2023-03-14

以下是我如何解决这个问题的:

//After your current setDestination line below:
form.setDestination(FormApp.DestinationType.SPREADSHEET, masterSpreadsheet.getId());

//insert a new sheet which will be at index [0]. This forces the sheet linked to the form created first at index [1].

// rename the sheet at index [1] -- your form response sheet
// delete the newly inserted sheet at index [0]
薄鸿远
2023-03-14

一种广泛的方法是创建一个包含组名和电子表格URL的表格,然后使用它来重命名该表格。

实现上述功能的一种方法是使用表单提交触发器重命名工作表:如果工作表具有默认名称模式,则相应地重命名工作表。

var table = [
  ['Group A', 'url1'],
  ['Group B', 'url2']
]

function respondToOnFormSubmit(e){
  var sheet = e.range.getSheet();
  var name = sheet.getName();
  if(/^Form Responses/.test(name)){
    var url = sheet.getFormUrl();
    var newName = table.filter((row) => return row[1] === url;)
    if(newName.length > 0){
      sheet.setName(newName[0]);
    }
  }

相关的

  • 不同的Google表单网址(如何在一个大的电子表格中找到链接的表单回复)?
 类似资料:
  • 问题内容: 我通过重命名应用程序的文件夹,导入及其所有引用(模板/索引)来更改了Django中应用程序的名称。但是现在当我尝试运行时出现此错误 如何调试和解决此错误?有什么线索吗? 问题答案: 请按照以下步骤在Django中更改应用的名称: 重命名项目根目录中的文件夹 更改为你的应用程序的任何引用他们的依赖关系,即应用程序的文件。 使用以下命令编辑数据库表: 同样,如果你有模型,则必须重命名模型表

  • 问题内容: 我有一个表格来表示我的html页面中的一些数据。我正在尝试使此表具有响应性。我怎样才能做到这一点? 。 问题答案: 基本上 响应表只是宽度为100%的表。 您可以使用以下CSS设置表格: 您可以通过添加类(或使用进行定位),根据屏幕尺寸使用媒体查询来显示/隐藏/操作列: HTML

  • 问题内容: 我是Flask和python的新手。我有一堆视图以jsonify()格式返回字典。对于这些视图,我想添加一个after_request处理函数以更改响应,以便可以向该字典添加键。我有: 我得到的错误是“ TypeError:列表索引必须是整数,而不是str”。请求完成后,如何更改响应字典并添加密钥? 问题答案: 是WSGI对象,这意味着响应的主体必须是可迭代的。对于响应来说,这只是一个

  • 问题内容: 是用于更改工作目录的shell命令。 如何在Python中更改当前的工作目录? 问题答案: 你可以使用以下命令更改工作目录: 使用此方法时,有两个最佳实践: 在无效路径上捕获异常(WindowsError,OSError)。如果抛出异常,请不要执行任何递归操作,尤其是破坏性操作。它们将沿旧路径而不是新路径运行。 完成后,返回到旧目录。可以通过将chdir调用包装在上下文管理器中以异常安

  • 是否可以更改AbstractHttpMessageConverter writeInternal()方法中的响应状态代码? 在我的抽象中(扩展MappingJackson2HttpMessageConverter),我希望将错误响应更改为200,并将实际的状态代码(例如400)添加到JSON中的状态字段中。 编辑1 我返回的代码如下: 所以对于这两个变体来说,这意味着: 在这两种情况下,都将返回h

  • 问题内容: 我如何在’django.contrib.sessions.models’中的Meta类中更改信息,以便我的项目可以具有统一的表名,但应用程序的功能相同? 谢谢 问题答案: 您可以尝试以下方法: 编辑 以上解决方案会引发错误,但可以进行以下工作: