Я использую внешнее приложение для ввода данных в таблицу Google. Затем на эту рабочую книгу ссылается отдельная рабочая книга (с IMPORTRANGE(spreadsheet_key, range_string)
функцией), которая манипулирует и интерпретирует данные. Моя проблема в том, что всякий раз, когда я лично изменяю указанную рабочую книгу, справочная рабочая книга обновляется очень хорошо, но всякий раз, когда внешнее приложение изменяет ее, она не обновляется.
Я попытался отредактировать «Настройки таблицы», чтобы пересчет выполнялся каждую минуту и при каждом изменении. Кроме того, я также установил расширение в Google Chrome, которое автоматически обновляет страницу каждый час. Однако данные не будут повторно импортированы из указанной рабочей книги. Даже если я скопирую формулу в новую ячейку, данные все равно не будут повторно импортированы.
Могу ли я что-нибудь сделать со справочной книгой, чтобы Google Sheets повторно импортировал данные?
Изменить: Просто чтобы прояснить ситуацию, у меня в настоящее время есть одна рабочая книга с данными, введенными внешним приложением (назовите ее «исходный лист»), и другая рабочая книга с IMPORTRANGE
функцией в ней (назовите ее «ссылочный лист»). Данные, показанные IMPORTRANGE
функцией в «справочном листе», не включают никаких данных, введенных внешним приложением, так как я в последний раз редактировал «исходный лист». Кроме того, обе книги используют новые Google Sheets.
Изменить: Кроме того, этот вопрос не совпадает с тем, как связать ячейку в таблицах Google с ячейкой в другом документе? потому что я использую функцию, предоставленную в качестве решения этого вопроса, для импорта данных из электронной таблицы. Проблема не в том, как импортировать данные, а в том, как обновить источник данных. Я предполагаю, что Google позаботился бы об этом для меня, но данные в «справочном листе» не обновляются, и единственный способ найти обновление - это физически перейти на «исходный лист». "и отредактируй это сам.
источник
separate workbook
порядке.Ответы:
Я боролся с той же проблемой. Вместо того, чтобы писать пользовательскую функцию, я добавляю другую строку запроса
spreadsheet_url
вIMPORTRANGE
надежде, что каждый раз, когда страница обновляется, Google считает, что ей нужно получить данные из новой электронной таблицы. Я просто добавляю новую метку времени, чтобы URL каждый раз был уникальным. Это явный взлом, но он работал для меня на многих листах.Моя формула ранее выглядела примерно так:
И теперь это выглядит так:
Обновить:
Этот метод больше не работает, так как Google больше не позволяет
now()
внутриimportrange()
. Смотрите комментарий от Хью ниже.источник
Следующее приходит от Джимми в этом ответе веб-приложений .
=now()
уравнение в случайную ячейку, скажемZ1
=importrange()
функцию, которая ссылается наnow
функцию другой электронной таблицы.Я перепробовал множество других предложений, в том числе с помощью
=now()
функции, трюка с URL-адресом в этой теме или приложения Apps Script для вставки произвольного текста с заданным интервалом, но ничто не заставило бы importrange обновиться, кроме ручного редактирования исходного листа.источник
Я обнаружил, что самым простым способом было сделать простое
if
заявление по всемуimportrange
.Это работает каждый раз.
источник
=if (Now() > now()-1, IMPORTRANGE(B1,B2),)
Мне кажется, что обходной путь с датой не работает - есть явное замечание, что использование дат и меток rand недопустимо.
Мой очень хакерский обходной путь - удалить ячейку и нажать Ctrl + Z. Это заставляет освежиться каждый раз. Это просто для сценария этого открытого или через определенные промежутки времени, чтобы сохранить данные свежими.
источник
Я нашел простой хак для имитации ручного обновления ячейки и запуска модификаций во внешней таблице.
Создал пользовательскую функцию, подобную этой:
Затем на своем листе я называю это так:
где
tab!B1
одна из ячеек, которые я изменяю кодом.источник
ИЛИ ... вы могли бы сделать простой сценарий, сначала давая значение cero (0), затем включая формулу обратно, и это делает свое дело:
источник
Мне удалось найти способ решить мою проблему (подробно здесь ) с помощью скрипта приложений с пользовательской функцией.
Если вы замените
=IMPORTRANGE(spreadsheet_url, range_string)
в таблице электронную таблицу=DynamicImportRange(spreadsheet_url, sheet_name, range)
и вставите приведенный ниже код в Инструменты -> Редактор сценариев -> Пустой проект, он должен работать (см. Это для получения дополнительной информации о написании сценариев приложений).Если вы хотите, чтобы лист обновлялся на регулярной основе, вы можете настроить триггер, перейдя в Ресурсы -> Триггеры текущего проекта в окне Сценарий приложений.
источник
SpreadsheetApp.openById()
илиSpreadsheetApp.openByUrl()
. Проверьте здесь и здесьВ качестве обходного пути для создания
now()
контрольно-пропускного пункта вы можете изменить настройки электронной таблицы, чтобы они обновлялись каждый час.Файл -> Настройки электронной таблицы -> Расчет
Обновите лист, чтобы пересчитать себя на « Об изменении и каждый час » или «Об изменении и каждую минуту». Хотя имейте в виду, выбор пересчета каждую минуту может повредить электронную таблицу.
источник
Вы можете использовать дополнение Sheetgo для Google Sheets, чтобы автоматически обновлять вашу ссылку с другого листа. Вы можете использовать 30 обновлений бесплатно в месяц или получить платную подписку на дополнительные обновления. Это видео должно объяснить вам основное использование.
источник