Проблема с автоматической вставкой строк и последующей ссылкой на другую вкладку

Я использую Zapier для автоматической вставки внешнего контента на вкладку Google Spreadsheet, и кажется, что он вставляет строку непосредственно под последней непустой строкой, а не заменяет содержимое в следующей пустой строке.

Таким образом, если строка 7 была последней строкой, Zapier вставляет новую строку под 7, а старая строка 8 становится строкой 9.

Затем у меня есть две другие вкладки, обе из которых доступны для просмотра в Интернете (там, где первая нет), которые ссылаются на содержимое первой вкладки, но по мере добавления нового содержимого эти ссылки в формате data!a8 также перемещаются. Если я использую data!$a$8, мне нужно вручную изменить 500 строк.

Есть ли способ разрешить Zapier вставлять строки с кодированием или без него, но при этом автоматически ссылаться на эту строку?


person Ewen    schedule 22.04.2015    source источник
comment
Обязательно прочитайте документы zapier.com. /help/google-docs/ В нем говорится, что в середине листа не может быть пустых строк. Также Zapier вставляет какие-либо скрипты в листы Google. Щелкните инструменты, редактор сценариев и, если там есть какой-либо код, поделитесь им. Вы также можете рассмотреть NAMED RANGES как решение. Дополнительную информацию можно найти здесь. support.google.com/docs/answer/63175   -  person Munkey    schedule 23.04.2015
comment
Спасибо @Munkey, Zapier просто вставляет новые записи через oAuth (без добавления скриптов). Сейчас я запускаю скрипт для функции onChange, которая делает свое дело, и после долгого чтения скрипты оказались единственным способом. Вскоре я опубликую улучшенную версию кода.   -  person Ewen    schedule 25.04.2015


Ответы (2)


Для тех, кто пытается сделать это без скрипта, это невозможно.

Скрипт

  1. Создайте функцию, подобную приведенной ниже. Обратите внимание, что мы читаем один лист (AutomaticImport) и записываем на лист WebData

    function fncUpdateWebData() { var ss = SpreadsheetApp.getActiveSpreadsheet(), sheet = ss.getSheetByName("AutomaticImport"), sheetWeb = ss.getSheetByName("WebData"), arrRides = sheet.getDataRange().getValues(), row,col,iOutputRow,strURL;

    iOutputRow = 2; for ( iRow = 1; iRow < arrRides.length; iRow++) { sheetWeb.getRange(iOutputRow,1).setValue(arrRides[iRow][5]); // date strURL = '=HYPERLINK("' + 'https://www.strava.com/activities/' + arrRides[iRow][7] + '","' + arrRides[iRow][8] + '")'; sheetWeb.getRange(iOutputRow,2).setValue(strURL); // start & link sheetWeb.getRange(iOutputRow,3).setValue(arrRides[iRow][4]); // Distance sheetWeb.getRange(iOutputRow,4).setValue(arrRides[iRow][0]); // Avg Speed
    iOutputRow++; } }

    1. In Resources/Current Project Triggers and a new trigger and use your new function name, "from Spreadsheet" and select "onChange"

Я надеюсь, что он поможет вам преодолеть препятствие.

person Ewen    schedule 25.04.2015

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

На самом деле это есть в документации Zapier, справа здесь. Решение состоит в том, чтобы создать две таблицы Google, одну для Zapier, а другую для ваших формул. Подключите Zapier к первому листу, а затем используйте команду IMPORTRANGE. скопировать необходимые столбцы на второй лист. Напишите свои формулы на втором листе, и вы заметите, что дополнительный уровень косвенности не позволяет Google переписать их, когда строка добавляется в исходный диапазон!

Tl;dr: RTFM, как обычно.

person zmbc    schedule 30.12.2016