Автоматически создавать электронную таблицу, вызванную новым выбором из выпадающего - PullRequest
0 голосов
/ 13 февраля 2020

Я пытаюсь автоматизировать распределение отзывов преподавателей для врачей в отделении интенсивной терапии. В настоящее время мы вводим отзыв в форму Google, и она затем заполняется в электронную таблицу, чтобы затем распространяться.

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

= QUERY (IMPORTRANGE ("sheet_url", "Ответы формы 1! A1: G159"), "select * WHERE Col3 = 'Presenter_name'")

Шаг, который я изо всех сил пытаюсь автоматизировать является созданием новой электронной таблицы, когда используется новая опция из выпадающего списка (ie представляет новый учитель). В идеале это также будет включать их имя в заголовке.

Буду признателен за любую помощь!

Ответы [ 2 ]

1 голос
/ 13 февраля 2020

Если у каждого докладчика есть своя собственная таблица, и если у каждой таблицы есть имя, которое может быть связано с докладчиком, и если таблицы хранятся в определенной папке c, можно создать массив имен таблиц. (с DriveApp).

Если имя докладчика не может быть связано с именем таблицы в массиве, необходимо создать новую таблицу.

Что-то вроде этого?

function BlaBlaBla(){

var presenterName = "ABCDE"; //get this with appscript out of the spreadsheet

var specificFolderId = "XXXX"; //id of the specific folder
var ssFiles = DriveApp.getFolderById(specificFolderId).getFiles();
var ssFileNames = [];

  while (ssFiles.hasNext()) {
    var ssFile = ssFiles.next();
    var ssFileName = ssFile.getName();
    ssFileNames.push(ssFileName);
  }

  var presenterNamePlus = "RMH CCU Teaching Feedback " + presenterName;
  if(ssFileNames.indexOf(presenterNamePLus) == -1){

    SpreadsheetApp.create(presenterNamePlus);

    //move new spreadsheet to specific folder

  }
}
0 голосов
/ 13 февраля 2020

В Apps Script вы можете запускать сценарии на триггере

В вашем случае onEdit триггере и устанавливаемом триггере onFormSubmit будет более подходящим

Триггер OnFormSubmit, привязанный к электронной таблице назначения

  • Вы получаете ответ элемента, соответствующий интересующему раскрывающемуся вопросу, и оцениваете его значение
  • В операторе if вы указываете, что новая электронная таблица должна быть создана, если значение равно значению интереса

Триггер OnEdit

  • Вы можете указать столбец для просмотра и значение для просмотра
  • Оператор if будет выполнен, если ячейка в указанном столбце была изменена на опцию раскрывающегося списка интерес (например, «новый учитель представляет»);

  • В обоих случаях триггеры могут вызывать функцию, которая будет извлекать данные из других ячеек строки с отредактированным раскрывающимся списком (например, имя ) (или последний ряд в случае триггера onFormSubmit) и создайте электронную таблицу с именем, указанным в интересующей ячейке

Пример:

function onEdit(e) {
//modify the column number if necessary
  if (e.range.getColumn() == 3 && e.value == "a new teacher presents"){
    var row = e.range.getRow();
    createNewSpreadsheet(row);
  }
}


function BindOnSubmitToMe(e){
// modify the question number if necessary
  if (e.values[2] == "a new teacher presents"){
    var row = e.range.getRow();
    createNewSpreadsheet(row);
  }
}


function createNewSpreadsheet(row){
  Logger.log("create");
  var nameColumn = 1;
  var name = SpreadsheetApp.getActive().getActiveSheet().getRange(row, nameColumn).getValue();
  SpreadsheetApp.create(name);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...