Задать вопрос
ProgrammerForever
@ProgrammerForever
Учитель, автоэлектрик, программист, музыкант

Как сделать двунаправленную синхронизацию данных между Google Spreadsheets?

Добрый день. Подскажите, есть ли способ сделать двунаправленную синхронизацию данных между двумя гугл таблицами? Т.е. юзер меняет данные в первой таблице - они меняются во второй. В тот же момент другой юзер может поменять эти же данные во второй таблице и они должны поменяться в первой. Если было бы только на чтение, то решилось бы с помощью IMPORTRANGE()
Делал так: отслеживал onEdit, открывал книгу и менял значения второй книги на значения первой.
try{
   var rs = SpreadsheetApp.openByUrl(remoteUrl).getSheetByName(remoteListName);
   rs.getRange(row,col,event.range.getValues().length,event.range.getValues()[0].length)
.setValues(event.range.getValues());
   SpreadsheetApp.getActiveSpreadsheet().toast("Данные отправлены!");
}catch(err){
   Browser.msgBox(JSON.stringify(err));
};

В результате получаю ошибку: недостаточно прав. Почитал, вроде бы onEdit() урезан в правах Editor add-on authorization
{"message":"Вам не разрешено вызывать пользователя SpreadsheetApp.openByUrl. Необходимые разрешения: https://www.googleapis.com/auth/spreadsheets.",
"name":"Exception",
"fileName":"Код",
"lineNumber":60,
"stack":"\tat Код:60 (onEdit)
"}

Как это победить? Делать триггер по времени? Получится ненадёжно, часть данных может потеряться.
  • Вопрос задан
  • 317 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы