Автоматическое переименование формы загрузки гугл-ответа и файлов в виде ввода определенной формы - PullRequest
1 голос
/ 03 октября 2019

Я новичок в Google Script и хочу узнать, существует ли скрипт для следующих действий:

  1. У меня есть форма с определенными данными, например CourseCode, CourseNo, Class и я хочу, чтобы выходной ответ был CourseCodeCourseNo-Class

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

the form is attached as image

Ответы [ 2 ]

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

Спасибо за ваш ответ и полезный сценарий, но у меня все еще остается неразрешимая проблема при выполнении сценария: "Документ 1aPXI357UfQGdJnoxYfvtSq7GXhfizSSC отсутствует (возможно, он был удален или у вас нет прав на чтение?) (Строка30, файл "Код") DetailsDismiss "

function myFunction() {
  var ss=SpreadsheetApp.getActiveSpreadsheet();
  var sheet=ss.getActiveSheet();
  var lastRow=ss.getLastRow();
  Logger.log("1k2rOZfXjXHciPQh1pXn7-GP-p3rccMgT")
  Logger.log("1iWL9jbVNWIqn_mkSxkIWu73uwxsrw2f7")
  Logger.log("1aPXI357UfQGdJnoxYfvtSq7GXhfizSSC")

  //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,7).setValue(newResponse);
  var secodarySheetId;
  switch(department) {
  case "Physics":
    secodarySheetId="1k2rOZfXjXHciPQh1pXn7-GP-p3rccMgT";//Paste here the Id of the destinationsheet in the Physics folder
    break;
  case "Chemistry":
    secodarySheetId="1iWL9jbVNWIqn_mkSxkIWu73uwxsrw2f7";//Paste here the Id of the destinationsheet in the Chemistry folder
    break;
  case "Math":
    secodarySheetId="1aPXI357UfQGdJnoxYfvtSq7GXhfizSSC";//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("CR (Responses)").appendRow(rowContents[0]);
}
0 голосов
/ 04 октября 2019
  • Когда вы создаете форму Google, вы можете указать электронную таблицу destination для ответов
  • Вы можете получить доступ к хранилищу ответов в этой таблице с помощью Apps Script и, например, создатьдополнительный столбец, в котором ответы на ваши вопросы объединены в CourseCodeCourseNo-Class.
  • . Вы можете оценить ответ на вопрос Department и синхронизировать строку ответа со вторичной электронной таблицей - в зависимости от значения ответа
  • Вы можете реализовать устанавливаемый триггер при отправке формы для электронных таблиц для автоматической синхронизации дополнительных листов при каждой отправке формы.

Ниже приведен пример кода, отвечающий вашим потребностям. Пожалуйста, обратитесь к документации скрипта приложений для Google Forms и Google Spreadsheets , чтобы получить лучшее понимание и изменить образец по желанию.

Образец:

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,7).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]);
}

Откройте таблицу назначения, Tools->Script Editor, вставьте следующий код, сохраните его и добавьте триггер Form Submit через Edit->Current Projects triggers

enter image description here

Обратите внимание, что это одно из нескольких возможных решений, также возможно, например, обрабатывать ответы из сценария, прилагаемого к форме, а не из электронной таблицы назначения.

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