Скрипт Google Apps для устранения ошибок при внедрении электронной таблицы Google на сайт Google?


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

Итак, электронная таблица B использует importRange и запрос для извлечения необходимых столбцов из электронной таблицы A для заполнения нашего "каталога элементов".

Тогда, Я встроенная электронная таблица B на сайте Google группы. (Не стесняйтесь проверить сайт, если вам нравится в www.SewickleyNewcomers.com )

И это прекрасно работает.

Но . . . после того, как я закрыл Spreadsheets A & B и прошло несколько часов, если я пытаюсь открыть веб-страницу, в которую встроен каталог элементов, встроенный лист говорит: "# VALUE!"

Когда я снова открываю электронную таблицу B, она говорит то же самое: "#VALUE!".

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

И если я вернусь на веб-страницу с каталогом участников, встроенным в нее, все будет хорошо.

Предположительно, проблема заключается в том, что если электронная таблица B не открыта, она не может извлечь данные из электронной таблицы A.

Но я не могу встроить электронную таблицу A, потому что есть столбцы и листы, которые не могут быть публично доступны, как упоминалось выше.

Некоторые подробности:

  • Как в таблице а и таблице Б установлены в данный момент "у кого есть ссылка" как параметр общего доступа. (Хотя в идеале я хотел бы вернуть электронную таблицу A в "личное".)

  • Электронная таблица B встроена в сайт Google с помощью встроенного виджета вставить электронную таблицу.

  • Вот формула, которую я сейчас использую для извлечения данных из таблицы A в таблицу B:

    =arrayformula (query(importrange("_","хозяин!A: Z"), " выберите Col3, Col2, Col22, Col18, Col19, Col20, Col21, Col24, где Col26='да, продолжайте и включите мою контактную информацию в онлайн-каталог и в печатный каталог.'and (Col4='Yes' или Col4='yes') order by Col3"))

У кого-нибудь есть какие-нибудь мысли о том, что здесь происходит? И идеи для других способов, которыми я могу получить необходимые данные из таблицы а и на сайт (я, конечно, не должен пройдите через таблицу B, я просто не мог придумать другого способа сохранить все остальные данные в таблице a private)? Есть ли решение, которое использует какой-то скрипт приложений на сайте Google для завершения запуска, требующего внедрения электронной таблицы?

Заранее спасибо! И все люди, которые переезжают в Сьюикли, тоже благодарят вас!

1 2

1 ответ:

ImportRange показывает то, что он должен показывать в 85% случаев (согласно моим экспериментам). Во время остальных 15% он показывает #N/A или # VALUE.

Я считаю, что если, найдя #VALUE на веб-странице, вы просто подождете много (10-15 минут), то правильные данные вернутся на веб-страницу, даже если вы не откроете электронные таблицы.

В любом случае, чтобы избежать этой проблемы, вы можете сделать рабочий лист "publicSheet" в главном spreadhseet A, заполните его формулами, которые копируют необходимые вещи из других листов, и опубликуйте этот конкретный лист по файлу>опубликовать в интернете> "publicSheet". Если вы сделаете это, все равно никто не сможет получить доступ к другим листам таблицы A, но данные никогда не исчезнут из опубликованного рабочего листа.