Могу ли я использовать поле формы, чтобы переименовать загружаемый pdf или doc, используя googlescript? - PullRequest
1 голос
/ 07 октября 2019

Я работаю над формой, которая загружает файлы в формате pdf или doc. Эта форма имеет другие поля, такие как класс №. название курса .... и т. д. Могу ли я использовать поле формы Для переименования файла загрузки? ... Прилагается черновик формы

Это для загрузки данных от сотрудников в моем университете. Я работал над предыдущими предложениями, но все еще нужно изменить имя файла в поле формы. введите описание изображения здесь

Ответы [ 2 ]

0 голосов
/ 10 октября 2019

Уважаемые, я выполнил скрипт с помощью stackoverflow комментариев людей и полезных кодов с некоторыми изменениями. Я вставляю код ниже. Спасибо

   function myFunction() {
  var ss=SpreadsheetApp.getActiveSpreadsheet();

  var sheet=ss.getActiveSheet();
  var lastRow=ss.getLastRow();
  //the first column contains the timestamp
  var Department=sheet.getRange(lastRow,2).getValue();
  var CourseSubject=sheet.getRange(lastRow,3).getValue();
  var CourseCode=sheet.getRange(lastRow,4).getValue();
  var CourseNo=sheet.getRange(lastRow,5).getValue();
  var ClassCode=sheet.getRange(lastRow,6).getValue();
  var Staff=sheet.getRange(lastRow,7).getValue();
  var url=sheet.getRange(lastRow,8).getValue();

  var newResponse=CourseCode.toString()+CourseNo.toString()+"-"+ClassCode.toString();
  sheet.getRange(lastRow,9).setValue(newResponse);

  var secodarySheetId;
  switch(Department) {
  case "Chemistry":
    secodarySheetId="1YrkaAil_tJK1WKnhzAiDs6vntqAWFvxL";//Paste here the Id of the destinationsheet in the Physics folder
    break;
  case "Physics":
    secodarySheetId="168b6JIltI03EmOgV55984WfxJ5vhe49m";//Paste here the Id of the destinationsheet in the Physics folder
    break;
  case "Math":
    secodarySheetId="1Zq32ttSz_LrXVTiQkXGIegBEc0v1f5uY";//Paste here the Id of the destinationsheet in the Physics folder
    break;
   case "Computer Science":
    secodarySheetId="1QeWtEBtw1iI9IKZeC5-aXgifNV-2GgVD";//Paste here the Id of the destinationsheet in the Physics folder
    break;
   case "Biology":
    secodarySheetId="1bkwjWR-WkHGc3j3LxuR_pJ7wLP8fb0SV";//Paste here the Id of the destinationsheet in the Physics folder
    break;
  }

  var rowContents=sheet.getRange(lastRow,1,1,sheet.getLastColumn()).getValues();  


//  var dataFolder="1fQKYII5FpRQRbaYdoUUa3b2rjesr2K_4nHDQJzg22uk"


  //create a new folder with a specific nane, say newResponse
//  var parentFolder=DriveApp.getFolderById(secodarySheetId);
//  var newFolder=parentFolder.createFolder(newResponse)
// Logger.log(getFileName('13NeENGwL9FWtMYnLV9r5P8kbqxjlNo8d'));

  Logger.log(getFileName(secodarySheetId));
  // Department folders 
  var DepartmentFolder = getFileName(secodarySheetId);

  // Change file name
  var MainFolder = DriveApp.getFolderById("0ByV7HytJeZ-5fkota3lRQ3llbGczb2lnMmV4dXN6cTZWa2VSZVljOWkzVDlGb2w0MHlBdUE"); // change accordingly to  folder ID
  var files = MainFolder.getFiles(); 
// new name of csv that I want to rename the file within my google drive folder
    while(files.hasNext())
    {        // iterate throught the csv files available
        var file = files.next()
        // will rename all csv's to processed
        file.setName(newResponse);
    }



  DriveApp.getFolderById(secodarySheetId).addFile(file); 
  MainFolder.removeFile(file);


  }  
0 голосов
/ 08 октября 2019

Нет специального поля формы для переименования загружаемого файла, но вы можете создать дополнительное поле, в котором вы предлагаете пользователю ввести имя, в которое файл должен быть переименован.

Если файл загружен, его URL на диске Google будет вставлен в соответствующее поле в электронной таблице назначения:

enter image description here

  • В первомНа шаге вам нужно извлечь URL из листа и извлечь Id - вы можете сделать последний, например, с помощью string.split ()
  • На следующем шаге вы можете добавить адресаты и переименоватьфайл с методом DriveApp DriveApp.getFileById (id) .setName (name) + Таким образом, имя может быть предварительно выбрано вами или введено отправителем формы в указанном поле формы.

На основе предыдущего решения, которое я предоставил вам, вот модификация, которая переименовывает поданное имя в поле ввода в соответствующем поле формы:

enter image description here

function myFunction() {
  var ss=SpreadsheetApp.getActiveSpreadsheet();
  var sheet=ss.getActiveSheet();
  var lastRow=ss.getLastRow();
  //the first column contains the timestamp
  var department=sheet.getRange(lastRow,2).getValue();
  var subjectCode=sheet.getRange(lastRow,3).getValue();
  var courseCode=sheet.getRange(lastRow,4).getValue();
  var courseNo=sheet.getRange(lastRow,5).getValue();
  var newResponse=courseCode.toString()+courseNo.toString()+"-"+subjectCode.toString();
  sheet.getRange(lastRow,8).setValue(newResponse);
  var secodarySheetId;
  switch(department) {
  case "Physics":
    secodarySheetId="XXX";//Paste here the Id of the destinationsheet in the Physics folder
    break;
  case "Chemistry":
    secodarySheetId="XXX";//Paste here the Id of the destinationsheet in the Chemistry folder
    break;
  case "Math":
    secodarySheetId="XXX";//Paste here the Id of the destinationsheet in the Maths folder
    break;
  }

 var rowContents=sheet.getRange(lastRow,1,1,sheet.getLastColumn()).getValues();
 SpreadsheetApp.openById(secodarySheetId).getSheetByName("Sheet1").appendRow(rowContents[0]);
  //Here is the part retrieving the file, the desired new name and renaming the file
  var url=sheet.getRange(lastRow,6).getValue();
  var regex_ids = /\/file\/d\/([^\/]+)/;
  var Id = url.split('=');//.match(/[-\w]{25,}/); //regex_ids.exec(url);
  var newName=sheet.getRange(lastRow,7).getValue();
  DriveApp.getFileById(Id).setName(newName)
}

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