Здравствуйте. Часто мне приходится делать одну и ту же задачу в таблицах, которые постараюсь описать ниже. Таблица состоит из 3 вкладок (А, Б, В). Вкладка Б в этом процессе не участвует. Вкладка А - это копия вкладки В, в которой уже кто то работал. Вкладка В служит чисто как чистый бланк для копирования с нее новых не заполненных вкладок. Я постоянно провожу такие задачи: 1. Удаляю лист А. 2. Создаю копию листа В. 3. Копию листа В переименовываю (Новое имя вкладки всегда одинаковое, например "Сдача") 4. Переношу данную вкладку в начало списка (первая слева) 5. Переименовываю документ в имя типа "текст + дата"
В этот раз случайно наткнулся на запись скриптов. Ранее об этом не думал, тем более что я в этом полный 0. В итоге, я записал все свои действия, удалил строчку, в которой скрипт делал активной какую то ячейку и в результате у меня получилось вот это:
[vba]
Код
function _111() { var spreadsheet = SpreadsheetApp.getActive(); spreadsheet.deleteActiveSheet(); spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Сдача (загот)'), true); spreadsheet.duplicateActiveSheet(); spreadsheet.moveActiveSheet(1); spreadsheet.getActiveSheet().setName('Сдача'); spreadsheet.rename('DEU (21.05)'); };
[/vba]
Как я понимаю: Функцию я назвал 111 и это отображается в первой строке. Далее скрипт удаляет активную вкладку... Вот тут можно указать чтоб скрипт удалял не активную вкладку, а строго ту, которая называется "Сдача"? Далее скрипт копирует вкладку-заготовку, передвигает ее в начало списка и переименовывает ее в имя "Сдача". В конце скрипт переименовывает документ в имя "DEU (21.05)". Вот тут тоже есть вопрос, суть имени такое, что имя идет по шаблону "текст (ГГ.ММ)", где текст - постоянное значение, а ГГ.ММ - дата в виде последние цифры года и номер месяца в формате 2 цифры. Можно как то скрипту указать, чтоб он давал имя каждый раз при запуске скрипта уже с актуальной датой? Если надо, то дату в желаемом формате можно указать в какой то ячейке на листе, чтоб потом использовать в скрипте, если без этого никак. Спасибо.
upd Очень сложно все написал, попробую короче. Можно ли скрипт выше привести к виду, который бы: 1. удалил вкладку "Сдача"; 2. сделал дубликат вкладки "Сдача (загот)" 3. переименовал бы вкладку "Сдача (загот) (копия)" в "Сдача" 4. переместил бы вкладку "Сдача" на первое место 5. переименовал бы документ по шаблону "Текст (ГГ.ММ)", где ГГ - год в формате 2 цифры (21), ММ - месяц в формате 2 цифры, например май - 05. И это все без привязки к активному листу, чтоб я будучи на любом листе мог запускать скрипт.
Здравствуйте. Часто мне приходится делать одну и ту же задачу в таблицах, которые постараюсь описать ниже. Таблица состоит из 3 вкладок (А, Б, В). Вкладка Б в этом процессе не участвует. Вкладка А - это копия вкладки В, в которой уже кто то работал. Вкладка В служит чисто как чистый бланк для копирования с нее новых не заполненных вкладок. Я постоянно провожу такие задачи: 1. Удаляю лист А. 2. Создаю копию листа В. 3. Копию листа В переименовываю (Новое имя вкладки всегда одинаковое, например "Сдача") 4. Переношу данную вкладку в начало списка (первая слева) 5. Переименовываю документ в имя типа "текст + дата"
В этот раз случайно наткнулся на запись скриптов. Ранее об этом не думал, тем более что я в этом полный 0. В итоге, я записал все свои действия, удалил строчку, в которой скрипт делал активной какую то ячейку и в результате у меня получилось вот это:
[vba]
Код
function _111() { var spreadsheet = SpreadsheetApp.getActive(); spreadsheet.deleteActiveSheet(); spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Сдача (загот)'), true); spreadsheet.duplicateActiveSheet(); spreadsheet.moveActiveSheet(1); spreadsheet.getActiveSheet().setName('Сдача'); spreadsheet.rename('DEU (21.05)'); };
[/vba]
Как я понимаю: Функцию я назвал 111 и это отображается в первой строке. Далее скрипт удаляет активную вкладку... Вот тут можно указать чтоб скрипт удалял не активную вкладку, а строго ту, которая называется "Сдача"? Далее скрипт копирует вкладку-заготовку, передвигает ее в начало списка и переименовывает ее в имя "Сдача". В конце скрипт переименовывает документ в имя "DEU (21.05)". Вот тут тоже есть вопрос, суть имени такое, что имя идет по шаблону "текст (ГГ.ММ)", где текст - постоянное значение, а ГГ.ММ - дата в виде последние цифры года и номер месяца в формате 2 цифры. Можно как то скрипту указать, чтоб он давал имя каждый раз при запуске скрипта уже с актуальной датой? Если надо, то дату в желаемом формате можно указать в какой то ячейке на листе, чтоб потом использовать в скрипте, если без этого никак. Спасибо.
upd Очень сложно все написал, попробую короче. Можно ли скрипт выше привести к виду, который бы: 1. удалил вкладку "Сдача"; 2. сделал дубликат вкладки "Сдача (загот)" 3. переименовал бы вкладку "Сдача (загот) (копия)" в "Сдача" 4. переместил бы вкладку "Сдача" на первое место 5. переименовал бы документ по шаблону "Текст (ГГ.ММ)", где ГГ - год в формате 2 цифры (21), ММ - месяц в формате 2 цифры, например май - 05. И это все без привязки к активному листу, чтоб я будучи на любом листе мог запускать скрипт.Faraway
Сообщение отредактировал Faraway - Суббота, 01.05.2021, 20:52
doober, отлично работает. Единственное - я поменял в формате даты месяц и год местами. А есть ли возможность в скрипт вставлять комментарии? Если да, то пожалуйста, добавьте к каждой строчке комментарии, чтоб понять какая строка что делает. Некоторые интуитивно понятно из кода, другие - нет.
Подскажите еще одну штуку пожалуйста. Я хочу на определенном листе, пусть это будет лист с названием "Тест", в ячейке F5 заменить некоторый текст на такой, в котором заменится определенная часть текста (дата) на дату в формате, который был описан выше. У меня получается вот такой скрипт:
[vba]
Код
function myFunction1() { var spreadsheet = SpreadsheetApp.getActive(); spreadsheet.getRange('F5').activate(); spreadsheet.getCurrentCell().setValue('Текст до('+Utilities.formatDate(new Date(), "GMT+3", 'yy.MM')+')текст после'); };
[/vba]
Все работает как я хотел, но подскажите пожалуйста, как сделать так, чтоб скрипт работал не на активной вкладке, а на той, название которой я укажу. Например мне надо строго чтоб скрипт работал на вкладке "Тест", с которой вкладки бы я его не запускал.
Что можно почитать/посмотреть, чтоб немного понять уровень написания скриптов? Чтоб хотя бы элементарные задачи мог сам делать, посоветуйте пожалуйста.
doober, отлично работает. Единственное - я поменял в формате даты месяц и год местами. А есть ли возможность в скрипт вставлять комментарии? Если да, то пожалуйста, добавьте к каждой строчке комментарии, чтоб понять какая строка что делает. Некоторые интуитивно понятно из кода, другие - нет.
Подскажите еще одну штуку пожалуйста. Я хочу на определенном листе, пусть это будет лист с названием "Тест", в ячейке F5 заменить некоторый текст на такой, в котором заменится определенная часть текста (дата) на дату в формате, который был описан выше. У меня получается вот такой скрипт:
[vba]
Код
function myFunction1() { var spreadsheet = SpreadsheetApp.getActive(); spreadsheet.getRange('F5').activate(); spreadsheet.getCurrentCell().setValue('Текст до('+Utilities.formatDate(new Date(), "GMT+3", 'yy.MM')+')текст после'); };
[/vba]
Все работает как я хотел, но подскажите пожалуйста, как сделать так, чтоб скрипт работал не на активной вкладке, а на той, название которой я укажу. Например мне надо строго чтоб скрипт работал на вкладке "Тест", с которой вкладки бы я его не запускал.
Что можно почитать/посмотреть, чтоб немного понять уровень написания скриптов? Чтоб хотя бы элементарные задачи мог сам делать, посоветуйте пожалуйста.Faraway
Сообщение отредактировал Faraway - Суббота, 01.05.2021, 21:38
по первой части все работает как часики! Второй вопрос уже немного о другом процессе, а именно есть вкладка 1 и вкладка 2, надо скрипт такой логики:
1. Скопировать текст в "Вкладка 1" ячейки F5 и вставить его во "Вкладка 2" D8. 2. Вставить в "Вкладка 3" F2 текст "просто текст" Еще, интересно, а можно ли обращаться к вкладкам не по именам, а по порядку? Например: 3. Сделать дубликат вкладки №2 4. Переместить вкладку №3 на место вкладки №2.
Я думаю таких знаний мне полностью хватит для тех задач, которые мне надо делать. Спасибо.
по первой части все работает как часики! Второй вопрос уже немного о другом процессе, а именно есть вкладка 1 и вкладка 2, надо скрипт такой логики:
1. Скопировать текст в "Вкладка 1" ячейки F5 и вставить его во "Вкладка 2" D8. 2. Вставить в "Вкладка 3" F2 текст "просто текст" Еще, интересно, а можно ли обращаться к вкладкам не по именам, а по порядку? Например: 3. Сделать дубликат вкладки №2 4. Переместить вкладку №3 на место вкладки №2.
Я думаю таких знаний мне полностью хватит для тех задач, которые мне надо делать. Спасибо.Faraway
Сообщение отредактировал Faraway - Воскресенье, 02.05.2021, 10:42
Знаю, но дается оно мне не так легко, как хотелось бы. Подумал, что если бы вы подсказали мне самое необходимое, что мне нужно уже, а я бы уже далее сам пробовал изучать то, что мне возможно понадобится в будущем, то это был бы удобный вариант. Далее я бы уже просто пробовал писать сам и если бы не работало - спрашивал бы у знатоков, где ошибка.
Знаю, но дается оно мне не так легко, как хотелось бы. Подумал, что если бы вы подсказали мне самое необходимое, что мне нужно уже, а я бы уже далее сам пробовал изучать то, что мне возможно понадобится в будущем, то это был бы удобный вариант. Далее я бы уже просто пробовал писать сам и если бы не работало - спрашивал бы у знатоков, где ошибка.Faraway