TGViewer
Google Таблицы Google Таблицы @google_sheets · 60.2K subscribers
Post #1445 17.3K
Копируем таблицу от имени владельца, скрипт

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

Зачем это нужно? Чтобы сохранить все защиты диапазонов, которые есть в Таблице, они должны быть также от имени владельца. А также, чтобы Таблица лежала на Google Диске владельца.

--

Мы придумали скрипт для решения задачи, скрипт и поля для ввода в Таблице, делайте копию.

Как все работает:

1) Скопировали нашу Таблицу

2) Далее владелец Таблицы, которую мы будем копировать должен зайти в редактор скриптов и поставить скрипт on() на триггер по редактированию Таблицы


(триггеры > добавление нового триггера > выбираем функцию on() и выбираем "при редактировании"


2) Далее "сотрудники" заполняют лист (ссылка на Таблицу, кого добавим как редакторов в копию и новое имя Таблицы)

3) Далее кто угодно активирует чекбокс и происходит магия - триггер запускает скрипт от имени того, кто поставил триггер и в ячейках ниже вы увидите ссылку на скопированную Таблицу и дату и время копирования

И отдельно код:

function on(e) {
const sheet = e.source.getActiveSheet();
const range = e.range;

if (sheet.getName() == 'настройки' && range.getA1Notation() == 'B4' && e.value == 'TRUE') {
copy();
};
};

function copy() {
const ss = SpreadsheetApp.getActive();
const settings = ss.getRange("настройки!b1:b3").getValues().flat();
var [originalUrl, addEmails, name] = settings;
if (!originalUrl) return;
var newUrl = '';
try {
const or = SpreadsheetApp.openByUrl(originalUrl);
newUrl = or.copy(name || 'копия, ' + or.getName());
if (addEmails) newUrl.addEditors(addEmails.split(',').map(f => f.trim()));
newUrl = newUrl.getUrl();
} catch (e) {
newUrl = e.message;
};

ss.getRange("настройки!b5:c5")
.setValues([[newUrl, new Date()]]);
};
  • 👍 31
  • ❤ 6
  • 👎 4
  • 💘 4
  • 🔥 3
  • 😱 2
More from @google_sheets
  1. Oct 6, 2026PS Оцените наш выводок :) У каждой собачки свой лист, свой баланс и своя история прогулок.…
  2. Oct 6, 2026Часть 2. Считаем зарплату выгульщиков и "баланс" по собачке Итак, у нас есть выгрузка из A…
  3. Oct 6, 2026Часть 1. Приложение для выгульщиков Упомяну, что всего этого не случилось бы без прекрасно…
  4. Oct 2, 2026Скоро расскажем, как мы создали систему для dog walker в Петербурге 🐕 Люди гуляют с собак…
  5. Sep 29, 2026📶Автоматически обновляемый дашборд из 1С, который помогает смотреть на цифры не как на де…
  6. Sep 26, 2026Google Таблицы pinned Deleted message
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →