2015-05-21 8 views
0

У меня есть электронная таблица, которая связана с формой. По умолчанию заявки на формы добавляются к нижней части таблицы. Я хотел, чтобы последнее представление появилось вверху, поэтому я создал другую таблицу и использовал формулу =SORT('Form Responses'!A1:F, 1, 0) для копирования ответов в порядке убывания. Это отлично работает.Google Spreadsheet: добавить строки в определенные столбцы?

Теперь, что я хочу, есть другой столбец в отсортированной таблице, чтобы добавлять комментарии к ответам формы. Проблема в том, что любые комментарии, которые я делаю, не опускаются, когда отправляется другой ответ формы. Я хотел бы добавить еще одну строку в столбец комментариев, когда будет отправлен другой ответ формы. Как мне это сделать?

** EDIT: Я реализовал решение, показанное ниже. Я закончил тем, что избавился от второй таблицы и = СОРТ-функции и просто использовал сценарий, связанный с событием onFormSubmit электронной таблицы

+0

Почему бы не сделать форму подачи вставки в верхней части таблицы? – Kriggs

+0

@ Kriggs Как я могу это сделать? Извините, но я новичок в использовании электронных таблиц Google –

ответ

0

Проблема в том, что вы используете динамическую формулу в сочетании со статическим столбцом. Если вы хотите, чтобы он работал так, как вы говорите, попробуйте один из следующих вариантов.

  1. Вы можете добавить комментарии на вкладку «Представление формы», а затем ваш вид будет работать на вашей второй вкладке.

  2. Вместо функции = sort вы можете использовать скрипт приложения и использовать триггер onFormSubmit для копирования ответа на верх листа.

+0

им довольно не могу скопировать ответ на верх листа или перемещать строки arround без нарушения ответов формы. вы пробовали это? –

+0

@Bjorn Спасибо за ответ. 1 побеждает очко. Эта электронная таблица в основном используется в качестве системы рабочих билетов, и я не хочу прокручивать весь путь вниз, чтобы посмотреть, что представляет собой последняя публикация. Чем больше билетов мы получаем, тем больнее это становится. 2 Я понятия не имею, как реализовать. У меня очень мало опыта работы с docs-скриптами. Я полагаю, что это будет что-то вроде «onChange() {cutLastRow() => appendToTop()}», но детали теряются на мне, так как мне трудно найти примеры. –

+0

@ ZigMandel Хороший улов, который я имел в виду на втором листе. –

0

Я в конечном итоге избавиться от второй таблицы и функции = СНП и только с помощью сценария, который связан с onFormSubmit события электронной таблицы. Я придумал решение, используя редактор сценариев.

function moveLastRowToTop() { 

    var spreadSheet = SpreadsheetApp.getActive(); 
    var activeSheet = spreadSheet.getActiveSheet(); 
    var lastRow = activeSheet.getLastRow(); 
    var lastCol = activeSheet.getLastColumn(); 
    //get range of row to copy 
    var range = activeSheet.getRange(lastRow+1,1,1,lastCol); 
    //insert a new row at the top of the sheet 
    activeSheet.insertRowsAfter(1, 1); 
    //copy last row contents to newly created row 
    range.copyTo(activeSheet.getRange(2, 1, 1, lastCol), {contentsOnly:false}); 
    //delete last row 
    activeSheet.deleteRow(lastRow+1); 
} 
Смежные вопросы