Переопределить формат имен Google Forms - PullRequest
1 голос
/ 17 июня 2019

Функция загрузки файлов Google Forms переименовывает загруженный файл в следующем формате: (Исходное имя файла - Имя загрузчика). Мне нужно удалить имя загрузчика.

Я пробовал код в этой теме. Запретить переименование файла загрузки Google Forms

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");
}

но я получаю эту ошибку:

Элемент с указанным идентификатором не найден или у вас нет прав доступа к нему. при чангенаметоиде (код: 9)

Вот журнал отладки:

нажмите здесь

Кажется, что вместо имени файла submitID получает входные данные от Номер документа , который равен 40 в случае изображения выше.

В моей форме только три вопроса, а именно: номер документа, название и загрузка файла.

1 Ответ

0 голосов
/ 17 июня 2019
  • Вы хотите переименовать имя файла, загруженного в папку, созданную формой.

Если мое понимание верно, как насчет этой модификации?Из вашего вопроса, кажется, что форма состоит из 3 пунктов следующим образом.

У меня есть только три вопроса в моей форме, а именно номер документа, название и загрузка файла.

Если порядок элементов "Номер документа", "Заголовок" и "Загрузка файла", как насчет этой модификации?Пожалуйста, подумайте об этом как об одном из нескольких ответов.

Модифицированный скрипт: Шаблон 1

От:

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

Кому:

var submittedID = lastResponseItem[2].getResponse()[0]; // or lastResponseItem[2].getResponse().toString()
  • В этой модификации предполагается, что порядок элементов: «Номер документа», «Заголовок» и «Загрузка файла».

Модифицированный скрипт: Pattern 2

From:

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".

Ссылки:

Если я неправильно понял ваш вопрос, яизвиняться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...