覆盖 Google 表单命名格式

Override Google Forms Naming Format

Google 表单文件上传功能按以下格式重命名上传的文件:(原始文件名 - 上传者姓名)。我需要删除上传者的名字。

我试过这个线程中的代码。

function changenametoid() {

var form = FormApp.openById('');
var formResponses = form.getResponses();
var numResponses = formResponses.length;  
var lastResponse = formResponses[numResponses - 1];
var lastResponseItem = lastResponse.getItemResponses();      
var submittedID = lastResponseItem[0].getResponse();
var file = DriveApp.getFileById(submittedID);
var oldFileName = file.getName();
var indexOldFileName = oldFileName.indexOf("-");
var newFileName = submittedID;
var indexOldFileExt = oldFileName.lastIndexOf(".");
var newFileExt = oldFileName.slice(indexOldFileExt);
var modName = newFileName + newFileExt;
file.setName("modName");
}

但是我得到这个错误:

No item with the given ID could be found, or you do not have permission to access it. at changenametoid(Code:9)

调试日志如下:

click here

似乎 submittedIDDocument Number 获取输入而不是文件名,在上图。

我的表格中只有三个问题,即文档编号、标题和文件上传。

  • 您想重命名上传到表单创建的文件夹中的文件的文件名。

如果我的理解是正确的,这个修改怎么样?从你的问题来看,表格似乎有如下3个项目。

I only have three questions in my form namely Document Number, Title and the File Upload.

如果项目的顺序是"Document Number"、"Title"和"File Upload",那么这个修改呢?请将此视为几个答案之一。

修改后的脚本:模式 1

发件人:

var submittedID = lastResponseItem[0].getResponse();

收件人:

var submittedID = lastResponseItem[2].getResponse()[0]; // or lastResponseItem[2].getResponse().toString()
  • 在此修改中,假设项目的顺序为"Document Number"、"Title"和"File Upload"。

修改后的脚本:模式 2

发件人:

var submittedID = lastResponseItem[0].getResponse();
var file = DriveApp.getFileById(submittedID);
var oldFileName = file.getName();
var indexOldFileName = oldFileName.indexOf("-");
var newFileName = submittedID;
var indexOldFileExt = oldFileName.lastIndexOf(".");
var newFileExt = oldFileName.slice(indexOldFileExt);
var modName = newFileName + newFileExt;
file.setName("modName");

收件人:

var submittedID = "";
for (var i = 0; i < lastResponseItem.length; i++) {
  var type = lastResponseItem[i].getItem().getType();
  if (type == "FILE_UPLOAD") {
    submittedID = lastResponseItem[i].getResponse()[0];
    break;
  }
}
if (submittedID != "") {
  var file = DriveApp.getFileById(submittedID);
  var oldFileName = file.getName();
  var indexOldFileName = oldFileName.indexOf("-");
  var newFileName = submittedID;
  var indexOldFileExt = oldFileName.lastIndexOf(".");
  var newFileExt = oldFileName.slice(indexOldFileExt);
  var modName = newFileName + newFileExt;
  file.setName("modName");
}
  • 在这个修改中,假设项目包括一个"FILE_UPLOAD"项目。

参考文献:

如果我误解了你的问题,我深表歉意。