Нужно подправить скрипт (макрос) в Google Sheets

Guenter

New Member
Регистрация
08.11.2020
Сообщения
3
Привет.

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

Задача: Необходимо
-при изменении значений в ячейке "С2" (Alex) листа "1" скрипт копирует значения ячейки " А2 " (2)
- скрипт копирует лист " DOK " и вставляет туда скопированные значения (2)
- активирует ячейку "В17"
- изменяет Формулу (='1'! A1) - удаляет последний символ (1) и вставляет туда скопированное значение (2)
Получается Формула (='1'! А2)
- клик "файл" - " опубликовать в Интернете"
- устанавливает значения "2" (этот лист) вместо значения "весь документ" и изменяет второе значение-формат документа " PDF документ"
- клик " опубликовать"
- копирует ссылку
- переходит на лист "1"
- вставляет скопированные значения (ссылка) в ячейку " J2"

Сценарий завершается

Но скрипт должен реагировать на изменения в ячейках "С3", " С4 " и так далее вниз.

Проблема в том, что когда вы изменяете ячейку "С3", скрипт создает копию листа "док", но переименовывает ее в значение "2" (потому что оно было написано раньше), но не вставляет значение, скопированное из ячейки "С3", возможно, его скрипт и не копирует оттуда.

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

Затем можно подставить эту переменную вместо имени вкладки и подставить ее в Формулу ячейки "J17" листа "DOC".

Важно опубликовать ссылку именно на последний лист с соответствующим названием (Я не знаю, как решить эту проблему, возможно, можно применить поиск по параметрам)

-----------------------------------------

ссылка наа таблицу:

https://docs.google.com/spread... sp=sharing


код, который сейчас там создан, путем записи макроса:

Код:
function New() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getCurrentCell().offset(0, -2).activate();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('DOK'), true);
  spreadsheet.duplicateActiveSheet();
  spreadsheet.getActiveSheet().setName('2');
  spreadsheet.getCurrentCell().offset(16, 1).activate();
  spreadsheet.getCurrentCell().setFormulaR1C1('=\'1\'!R[-15]C[-1]');
  spreadsheet.getCurrentCell().offset(1, 0).activate();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('1'), true);
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('2'), true);
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('1'), true);
  spreadsheet.getCurrentCell().offset(0, 9).activate();
  spreadsheet.getCurrentCell().setValue('[URL]https://docs.google.com/spreadsheets/d/e/2PACX-1vQYCSNtW2EIwjH2T4QD_fie21sBl3xDK_r_U0ig2-zp4AH-UrXrpXAZphvkpQJQyN2x053TCgjS08eW/pub?gid=1387023601&single=true&output=pdf');[/URL]
};
 

BaNru

Пацифизжу
Команда форума
Регистрация
13.11.2010
Сообщения
4 138
Попробуй там, где указана двойка заменить на
Код:
spreadsheet.getActiveSheet().setName(spreadsheet.getActiveCell().getValue());
Где:
- spreadsheet - обращение к текущей таблице. Она у тебя в начале записана в переменную эту
- getActiveCell() - получение активной ячейки. Можно заменить на getCurrentCell(), которое у тебя используется, эффект должен быть такой же.
- getValue() - получить значение текущей ячейки.
 

Guenter

New Member
Регистрация
08.11.2020
Сообщения
3
Попробуй там, где указана двойка заменить на
Код:
spreadsheet.getActiveSheet().setName(spreadsheet.getActiveCell().getValue());
Где:
- spreadsheet - обращение к текущей таблице. Она у тебя в начале записана в переменную эту
- getActiveCell() - получение активной ячейки. Можно заменить на getCurrentCell(), которое у тебя используется, эффект должен быть такой же.
- getValue() - получить значение текущей ячейки.

Спасибо!

если я получу значение ячейки, как мне дальше это использовать?

то есть остается вопрос, как присвоить некой переменной полученные значения, во вторых как сделать так чтобы можно было получить значение не только конкретной ячейки и не только активной, а например ячеек с этой строки (из столбца A и столбца C)? суть в том, что скрипт должен будет перемещаться вниз чтобы получать и применять новые значения (а пока что это для меня невыполнимо...)
 

BaNru

Пацифизжу
Команда форума
Регистрация
13.11.2010
Сообщения
4 138
как присвоить некой переменной полученные значения
JavaScript:
var aaa = spreadsheet.getActiveCell().getValue();
и вставляй где надо aaa

например ячеек с этой строки
Нет времени проверить. Попробуй так. Не заработает, будем подробнее смотреть.
Ты уже ранее макросом писал смещения.
JavaScript:
spreadsheet.getCurrentCell().offset(0, -2).activate();
Учитывая это и ранее как брать значение можно попробовать вот так
JavaScript:
spreadsheet.getCurrentCell().offset(0, -2).activate().getValue();
offset - смещение по вертикали и горизонтали
 

Guenter

New Member
Регистрация
08.11.2020
Сообщения
3
JavaScript:
var aaa = spreadsheet.getActiveCell().getValue();
и вставляй где надо aaa


Нет времени проверить. Попробуй так. Не заработает, будем подробнее смотреть.
Ты уже ранее макросом писал смещения.
JavaScript:
spreadsheet.getCurrentCell().offset(0, -2).activate();
Учитывая это и ранее как брать значение можно попробовать вот так
JavaScript:
spreadsheet.getCurrentCell().offset(0, -2).activate().getValue();
offset - смещение по вертикали и горизонтали

Спасибо, буду пробовать!
Вообще в этом деле новичок, но интуитивно догоняю))
 
Верх Низ