覆盖 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
似乎 submittedID 从 Document 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"项目。
参考文献:
如果我误解了你的问题,我深表歉意。
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
似乎 submittedID 从 Document 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"项目。
参考文献:
如果我误解了你的问题,我深表歉意。