Size: a a a

Чат | Google Таблицы и скрипты

2022 January 29

АК

Андрей Карин... in Чат | Google Таблицы и скрипты
Добрый день, подскажите, пожалуйста, какой порядок выполнения расчётов на каждом листе? Что можно почитать по этому вопросу?
источник

РИ

Роман Игнатов... in Чат | Google Таблицы и скрипты
Какой порядок? О чём вы?
источник

АК

Андрей Карин... in Чат | Google Таблицы и скрипты
Очередность расчётов.
источник

ЮК

Юрий Кушнеров... in Чат | Google Таблицы и скрипты
Все начинается с порядка в голове.. а дальше по нисходящей ;)
источник

РИ

Роман Игнатов... in Чат | Google Таблицы и скрипты
формулы ссылаются на данные. Меняются данные - пересчитываются все формулы которые на них ссылаются.
источник

АК

Андрей Карин... in Чат | Google Таблицы и скрипты
Расширенный ответ. У меня есть расчёт, где по API дёргаются сущности, потом данные. Идёт первый уровень расчётов по данным сущностей, потом по производным показателям строятся расчёты. Так вот, начала появляться ошибка: таблица не найдена и т.д. Изменение очередности выгрузки сущностей помогли до времени, теперь уже не спасают.
источник

ИД

Игорь Дроздов... in Чат | Google Таблицы и скрипты
Сначала умножение и деление, затем сложение и вычитание))
источник

АК

Андрей Карин... in Чат | Google Таблицы и скрипты
Спасибо, кэп. =) Теперь хочу понять какой порядок обновления расчётов.
источник

u

un_excel_bot 😈 in Чат | Google Таблицы и скрипты
Андрей Карин (1) изменил репутацию Роман Игнатов (899)
источник

РИ

Роман Игнатов... in Чат | Google Таблицы и скрипты
Пожалуйста. Только ясней не стало. Данные меняются - все формулы бросаются на них опережая друг друга. Какой здесь может быть порядок?
источник

T

Tatiana in Чат | Google Таблицы и скрипты
Спасибо за подборку! Никак не решусь на курсы. Или Excel, или g-таблицы, или визуализация. Комбо от серьёзных спецов не попадались. А мне именно оно и надо. Наверное, попробую самостоятельно.
источник

АК

Андрей Карин... in Чат | Google Таблицы и скрипты
Допустим, у меня две сущности: курсы валют (к рублю) и профиль пользователя, где указана основная валюта.

Мне для пересчёта операций сначала нужно взять данные профиля, взять оттуда валюту пользователя. второй шаг, пойти в курсы и пересчитать все курсы от основного курса пользователя (допустим у пользователя гривны). А потом уже применять пересчитанные курсы к операциям и расчётам.

Если я начну считать курсы без выгруженного значения из профиля, то GS выдаст, что лист не найден и выгрузка завершится.

Чтобы было понятно от чём речь: https://docs.google.com/spreadsheets/d/1Z7gLJiU-GYRBivHWyQHYp2RoBYB2N4cbQNC8xT0MqNA/copy
Это шаблон, выгружаются данные из Дзенмани и собираются в три отчёта PL, BS, CFL.

Теперь задумался о правильном порядке выгрузке данных и вычислений, чтобы расчёт был с первого раза. Так для корректной работы, нужно выгрузить все сущности несколько раз, а потом только все отчёты начинают правильно работать. ))))


Поэтому повторю вопрос: подскажите, пожалуйста, где и что почитать по очередности расчётов в GS.
источник

РИ

Роман Игнатов... in Чат | Google Таблицы и скрипты
Почитайте лучше про SpreadsheetApp.flush(), который позволяет заставить пересчитать данные, которые находятся в таблице.
источник

АМ

Антон Михайлов... in Чат | Google Таблицы и скрипты
Всем привет. Подскажите куда капнуть. Не могу сообразить

Имеется 3 листа
Лист1
Данные в ячейках: a b c d
Лист2
Данные в ячейках: 1 2 3 4
Лист3
Нужно получить: a (1) b (2) c (3) d (4)

https://docs.google.com/spreadsheets/d/1KUqVf1UTYFj6TjbZ4cWozAMb167S0TlV_R3iTWDWgDc/edit?usp=sharing
источник

АК

Андрей Карин... in Чат | Google Таблицы и скрипты
Хорошее направление.

"Spreadsheet operations are sometimes bundled together to improve performance, " — вот это где-нибудь расшифровывается? Случайно не сталкивались? Как это происходит.
источник

АМ

Антон Михайлов... in Чат | Google Таблицы и скрипты
вот через array получилось. А с query можно как то?
источник

АК

Андрей Карин... in Чат | Google Таблицы и скрипты
Вот что рекомендуют в подобных случаях.

Here is a very simple way of preventing the next script from starting until the current script completes in google apps scripts. Just add a call for testWait() after each script you are processing successively. The SpreadsheetApp.flush() also seems to reset the timeout timer on the spreadsheet back to the default 5min so you have more time to process multiple scripts in one go.

//holds processing of next script till last one has completed
function testWait(){
 var lock = LockService.getScriptLock(); lock.waitLock(300000);
 SpreadsheetApp.flush(); lock.releaseLock();
}
источник

РИ

Роман Игнатов... in Чат | Google Таблицы и скрипты
ИМХО: У вас там нет асинхронности для того чтобы запускались функции как попало и приходилось ждать окончания выполнения предыдущей. Всё выполняется последовательно. Проблемы появляются если вы пытаетесь скрестить скрипты с какими либо действиями в таблице. Вполне достаточно простого flush() в таком случае. В testWait вы можете получить дополнительную ошибку об использовании слишком большого количества lock.
источник

К

Кирилл in Чат | Google Таблицы и скрипты
сделал через скрипт

function REGEXEXTRACTALL(text, regex, array = false) {
 let str = '',
     arr = [],
     pattern = new RegExp(regex,"gm"),
     match = text.match(pattern);
 try{
 if (!array) {
   match.forEach(v => {
     str += v + "\n"
   })
   console.log(str)
   return str.trim()
 } else {
     match.forEach(v => {
     arr.push(v)
   })
   console.log(arr)
   return arr
 }
 }catch(e){
   throw "(ノಠ益ಠ)ノ彡┻━┻"+e
 }
}
источник

АК

Андрей Карин... in Чат | Google Таблицы и скрипты
Понятно. Надо поэкспериментировать.
Хотя пока не до конца понимаю как лучше сделать, чтобы устранить ошибку.
источник