Задать вопрос
Этот вопрос закрыт для ответов, так как повторяет вопрос Скопировать данные из одного листа на другой последнюю не заполненную строку?
@Nik32

Скопировать данные из одного листа таблицы в другую таблицу на лист в последнюю не заполненную строку?

Здравствуйте подскажите пожалуйста, как сделать чтобы копировалось из таблицы в таблицу, например из таблицы "Сотрудник1", в таблицу "Данные", такое возможно, за помощь от благодарю, т. е если у человека будет доступ только к таблицы "Сотрудник1",а в таблицу "Данные" не будет доступа, скрипт в таком случае сработает? Вот код, который копирует с листа в лист.
/**
 *
 */
function onOpen() {
  SpreadsheetApp.getUi()
    .createMenu('Custom menu')
    .addItem('Copy to logs', 'userActionsCopyToLogs')
    .addToUi();
}

/**
 *
 */
function userActionsCopyToLogs() {
  var headers = ['Name', 'Number'];

  var from = SpreadsheetApp.getActiveSheet();

  if (from.getName() !== 'Sheet1') {
    SpreadsheetApp.getActive().toast('Activate a range on "Sheet1"');
    return;
  }

  var fromValues = from.getDataRange().getValues();

  var fromHeaders = fromValues[0].map(function(h) {
    return headers.indexOf(h);
  });

  var activeRange = SpreadsheetApp.getActiveRange();
  var rowStart = activeRange.getRow();
  var rowEnd = activeRange.getLastRow();
  var fromData = fromValues
    .filter(function(row, i) {
      return i >= rowStart - 1 && i <= rowEnd - 1;
    })
    .map(function(row) {
      return row.filter(function(_, j) {
        return fromHeaders[j] > -1;
      });
    });

  var to =
    SpreadsheetApp.getActive().getSheetByName('Logs') ||
    SpreadsheetApp.getActive().insertSheet('Logs');

  to.getRange(to.getLastRow() + 1, 1, fromData.length, fromData[0].length)
    .setValues(fromData)
    .activate();
}

Код не мой вот ссылка на него
  • Вопрос задан
  • 186 просмотров
Подписаться 1 Простой 4 комментария
Ответы на вопрос 2
oshliaer
@oshliaer Куратор тега Google Apps Script
Google Products Expert
К сожалению, скорее всего точный ответ с решением на такой вопрос выходит за рамки публичной поддержки. Но никто не отменяет теорию.

В данном случае необходимо создать два скрипта:
  1. Скрип клиента. Он так и будет отправлятьинформацию, которую вы получаете в onEdit
  2. Скрипт-сервер. Он должен получать данные от клиента и запускать функцию userActionsCopyToLogs уже у себя.


Есть и другие надежные хаки, которые работают, причем пользователь о них даже не подозревает.

В любом случае, копайте в сторону Google Apps Script Web Apps. Это должно помочь. Никакого лишенего кода, кроме отправки запроса на сервер и получения данных на сервере вам не нужно. Все остальное уже есть.

С уважением.
Ответ написан
joeberetta
@joeberetta
Читай: https://epdf.pub/google-for-dummies.html
если у человека будет доступ только к таблицы "Сотрудник1",а в таблицу "Данные" не будет доступа, скрипт в таком случае сработает?

Нет, в данном случае скрипт будет запускаться от имени пользователя, и у него будет доступ только в те области, к которым допущен сам пользователь.

Также скрипты, которым нужны "особые" привилегии, перед первым запуском будут требовать доступ на запуск
Ответ написан
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы