首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >脚本仅在上传单个文件时起作用。

脚本仅在上传单个文件时起作用。
EN

Stack Overflow用户
提问于 2021-02-25 13:59:48
回答 1查看 64关注 0票数 0

当员工提交google表单时,此脚本将根据表单中员工填写的信息重命名他们上传的文件。(此时它正在提取当前职务位置的名称、职务ID和地址,该文件始终是他们在职务站点上完成的内容的图片。)

但是,,只有当一个文件/图片上传到表单而不是所有文件时,脚本才会提取这个信息。

怎样的修改才能让它重命名表单中所有上传的文件。

代码语言:javascript
复制
 while (files.hasNext()) {
for (var i = 0; i < formResponses.length; i++) {
  var formResponse = formResponses[i];
  var itemResponses = formResponse.getItemResponses();
  var itemResponseFname = itemResponses[0];
  var itemResponseLname = itemResponses[10];
  var itemResponseID = itemResponses[11];
  var itemResponsePhoto = itemResponses[13];
  
  var photoID = itemResponsePhoto.getResponse();
  var newName = itemResponseFname.getResponse() + " " + itemResponseLname.getResponse() + " - " + itemResponseID.getResponse();
  var url = baseString + photoID + endString;
  var urlCheck = file.getUrl();
  if ( url == urlCheck) {
    var modName = newName + ".jpg";
    file.setName(modName);
EN

回答 1

Stack Overflow用户

发布于 2021-02-26 11:16:23

这样做的最简单方法如下:

  1. 安装提交触发器
  2. 获取提交文件的ID列表
  3. 将其名称更改为任何您喜欢的

在实践中,这种情况如下所示:

代码语言:javascript
复制
function submit(e) {
  const itemResponses = e.response.getItemResponses()
  
  // Read values
  const fname = itemResponses[0].getResponse()
  const lname = itemResponses[10].getResponse()
  const uid = itemResponses[11].getResponse()
  const imageIds = itemResponses[13].getResponse()
  
  // Iterate images
  for (let imgId of imageIds){
    const image = DriveApp.getFileById(imgId)

    // Create new filename (preserves extension)
    const filename = `${fname} ${lname} - ${uid}${getExtension(image)}`

    // Set file name
    image.setName(filename)
  }
}

/**
 * Returns the extension of a file
 * 
 * For example: A file with name 'example.json' will return '.json'.
 * 
 * @param file {DriveApp.File} File to extract the extension from
 * @returns {string} The extension with the dot.
 */
function getExtension(file) {
  // Gets the last dot and the characters that follow
  const r = /(\.\w+)$/.exec(file.getName())

  // If it has no extension return an empty string, otherwise return the captured group
  return r === null ? '' : r[1]
}

显然,您需要添加您似乎拥有的所有其他代码,如果您还没有安装触发器,那么已经安装好了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66369967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档