Здравствуйте. У меня не получается в гугл таблицах одни штука. Попробую детально описать проблему. В гугл таблице есть возможность задавать высоту строки задавая либо конкретное значение (по умолчанию 21 пикс), либо установить авто высоту, т.е. высота будет такой, чтоб вместилось все что в строке. У меня получилось в некоторых таблицах сделать так, чтоб строка была минимальной высотой 35 пикселей, но при этом, если там много текста, высота увеличивая, т.е. получается высота строки авто, но минимум 35 пикс. Я создал комию дока и теперь у меня в доке 35 пикселей, но намертво, т.е. если текста больше чем может поместиться в 35 пикселей, строка не увеличивается в высоту, а просто прячет часть текста. Подскажите пожалуйста, как сделать чтоб было автовысота с минимумом 35 пикселей?
Здравствуйте. У меня не получается в гугл таблицах одни штука. Попробую детально описать проблему. В гугл таблице есть возможность задавать высоту строки задавая либо конкретное значение (по умолчанию 21 пикс), либо установить авто высоту, т.е. высота будет такой, чтоб вместилось все что в строке. У меня получилось в некоторых таблицах сделать так, чтоб строка была минимальной высотой 35 пикселей, но при этом, если там много текста, высота увеличивая, т.е. получается высота строки авто, но минимум 35 пикс. Я создал комию дока и теперь у меня в доке 35 пикселей, но намертво, т.е. если текста больше чем может поместиться в 35 пикселей, строка не увеличивается в высоту, а просто прячет часть текста. Подскажите пожалуйста, как сделать чтоб было автовысота с минимумом 35 пикселей?Faraway
Сообщение отредактировал Faraway - Пятница, 14.12.2018, 12:54
Прикрутил ТАБЛИЧКУ, чтоб была возможность попробовать и увидеть то, о чем я пишу. Там есть желтоватые поля - они такие, как мне надо, т.е. минимальная высота 35, максимальная - зависит от количества строк. Зеленоватые поля - там жестко указано что высота 35 пикселей, если больше текста, то он просто прячется. А если снова переключить в режим автовысоты, то размер уменьшиться до 21 пикселя, а надо 35. Хочется понять, как именно осознанно сделать желаемую настройку не используя инструмент "копирование форматирования" (валик). Сейчас вижу как выход, делать именно копирование таблицы с желаемой настройкой и тогда уже с нее копировать формат, но это не выход, потому что надо указать высоту строки 30, а имеется только таблица с 35. В общем, если кто то владеет данным мастерством, научите пожалуйста сделать из "зеленых" строк такие, которые ведут себя как "желтые"
Прикрутил ТАБЛИЧКУ, чтоб была возможность попробовать и увидеть то, о чем я пишу. Там есть желтоватые поля - они такие, как мне надо, т.е. минимальная высота 35, максимальная - зависит от количества строк. Зеленоватые поля - там жестко указано что высота 35 пикселей, если больше текста, то он просто прячется. А если снова переключить в режим автовысоты, то размер уменьшиться до 21 пикселя, а надо 35. Хочется понять, как именно осознанно сделать желаемую настройку не используя инструмент "копирование форматирования" (валик). Сейчас вижу как выход, делать именно копирование таблицы с желаемой настройкой и тогда уже с нее копировать формат, но это не выход, потому что надо указать высоту строки 30, а имеется только таблица с 35. В общем, если кто то владеет данным мастерством, научите пожалуйста сделать из "зеленых" строк такие, которые ведут себя как "желтые"Faraway
Сообщение отредактировал Faraway - Пятница, 14.12.2018, 13:40
Излишнее цитирование удалено администрацией - это нарушение п.5j Правил форума Спасибо. Надо попробовать. Вот только я никогда не имел дело со скриптами... Получается, то что у меня получилось когда то сделать так как сделал - это баг? Еще вопрос, а можно вот это дело скриптом не ко всему документу присвоить, а только конкретным листам, и даже конкретным строкам, например верхние 5 строк пусть бы были по умолчанию, а все остальное уже скрипт пусть форматирует? Как вариант, лучше всего было бы если бы можно было самому прописывать с какой до какой строки так надо делать.
Излишнее цитирование удалено администрацией - это нарушение п.5j Правил форума Спасибо. Надо попробовать. Вот только я никогда не имел дело со скриптами... Получается, то что у меня получилось когда то сделать так как сделал - это баг? Еще вопрос, а можно вот это дело скриптом не ко всему документу присвоить, а только конкретным листам, и даже конкретным строкам, например верхние 5 строк пусть бы были по умолчанию, а все остальное уже скрипт пусть форматирует? Как вариант, лучше всего было бы если бы можно было самому прописывать с какой до какой строки так надо делать.Faraway
Сообщение отредактировал Faraway - Суббота, 15.12.2018, 09:52
Не знаю, может я что то не так делаю... Инструменты > редактор скриптов то что там было (2 строчки начальные) удалил, вставил ваш скрипт, жму запустить и мне выдает ошибку: TypeError: Не удается прочитать свойство "range" объекта undefined. (строка 2, файл Код) В самом доке при вводе данных, строка сначала уменьшается до 21 на мгновение, а потом становится указанной высотой либо больше, если текста много, не критично, но так и должно быть?
UPD Ха-ха! Вставляю данный скрипт, изменяю 35 на желаемые 30, запускаю его, в первой строке ввожу текст так, чтоб он занимал более 30 пикселей, скрипт растягивает строку. Далее удаляю скрипт... и данная строка становится желаемого форматирования, т.е. без скрипта авторазмер + минимум высота 30! Строки которые не были скриптом растянуты, остались со стандартным форматированием. Вот, пока решение через одно место, но есть, могу применять куда хочу, как хочу... Спасибо. Но если все же есть решение без скрипта,а я именно в первый раз сделал без скрипта как то, все делал как всегда, просто указал размер в настройках и оно само все сделалось как надо. Значит если не баг, то как то все же возможно.
Не знаю, может я что то не так делаю... Инструменты > редактор скриптов то что там было (2 строчки начальные) удалил, вставил ваш скрипт, жму запустить и мне выдает ошибку: TypeError: Не удается прочитать свойство "range" объекта undefined. (строка 2, файл Код) В самом доке при вводе данных, строка сначала уменьшается до 21 на мгновение, а потом становится указанной высотой либо больше, если текста много, не критично, но так и должно быть?
UPD Ха-ха! Вставляю данный скрипт, изменяю 35 на желаемые 30, запускаю его, в первой строке ввожу текст так, чтоб он занимал более 30 пикселей, скрипт растягивает строку. Далее удаляю скрипт... и данная строка становится желаемого форматирования, т.е. без скрипта авторазмер + минимум высота 30! Строки которые не были скриптом растянуты, остались со стандартным форматированием. Вот, пока решение через одно место, но есть, могу применять куда хочу, как хочу... Спасибо. Но если все же есть решение без скрипта,а я именно в первый раз сделал без скрипта как то, все делал как всегда, просто указал размер в настройках и оно само все сделалось как надо. Значит если не баг, то как то все же возможно.Faraway
Сообщение отредактировал Faraway - Суббота, 15.12.2018, 10:38
Вставляю данный скрипт, изменяю 35 на желаемые 30, запускаю его, в первой строке ввожу текст так, чтоб он занимал более 30 пикселей, скрипт растягивает строку. Далее удаляю скрипт... и данная строка становится желаемого форматирования, т.е. без скрипта авторазмер + минимум высота 30!
И правда! Сначала не очень поверил, но уже несколько раз проверил - и это так! Прикольно, будем знать.
P.S. Заметил, что достаточно создать одну строку нужного формата - на любом листе файла (возможно, каком-то специальном служебном, отведенном под эти цели). И далее формат этой строки можно копировать со специальной вставкой "только формат" на любую строку любого листа того же файла. И даже распространять в другие файлы, предварительно скопировав в них подобный служебный лист с заготовленным форматированием. Так что формулировка "через одно место" очень даже хорошо отражает суть подобных операций - в одном месте создаем формат, и далее во многие места его копируем
Вставляю данный скрипт, изменяю 35 на желаемые 30, запускаю его, в первой строке ввожу текст так, чтоб он занимал более 30 пикселей, скрипт растягивает строку. Далее удаляю скрипт... и данная строка становится желаемого форматирования, т.е. без скрипта авторазмер + минимум высота 30!
И правда! Сначала не очень поверил, но уже несколько раз проверил - и это так! Прикольно, будем знать.
P.S. Заметил, что достаточно создать одну строку нужного формата - на любом листе файла (возможно, каком-то специальном служебном, отведенном под эти цели). И далее формат этой строки можно копировать со специальной вставкой "только формат" на любую строку любого листа того же файла. И даже распространять в другие файлы, предварительно скопировав в них подобный служебный лист с заготовленным форматированием. Так что формулировка "через одно место" очень даже хорошо отражает суть подобных операций - в одном месте создаем формат, и далее во многие места его копируем Gustav
Та да, так и есть. А можете переделать скрипт под какую то конкретную строку на конкретном листе? Ну к примеру сделать чтоб на листе с названием "формат" скрипт поменял форматирование 3, 4 и 5 стороки? И еще, было бы не плохо указать максимум, т.е. например не более 150 пикселей чтоб растягивалось, так можно?
Копировать формат то можно, но например поменять минимальную высоту можно только с помощью скрипта.
Та да, так и есть. А можете переделать скрипт под какую то конкретную строку на конкретном листе? Ну к примеру сделать чтоб на листе с названием "формат" скрипт поменял форматирование 3, 4 и 5 стороки? И еще, было бы не плохо указать максимум, т.е. например не более 150 пикселей чтоб растягивалось, так можно?
Копировать формат то можно, но например поменять минимальную высоту можно только с помощью скрипта.Faraway
Сообщение отредактировал Faraway - Понедельник, 17.12.2018, 15:20
А можете переделать скрипт под какую то конкретную строку на конкретном листе? Ну к примеру сделать чтоб на листе с названием "формат" скрипт поменял форматирование 3, 4 и 5 стороки?
Переделал. Скрипт ниже форматирует выбранные строки на ЛЮБОМ листе файла, АКТИВНОМ перед выполнением скрипта. Минимальная высота запрашивается через inputBox во время выполнения.
Выбор строк происходит по текущему выделению, т.е. форматируются все строки, "проходящие" через текущее выделение. Например, выделен диапазон C3:D5 - будут отформатированы все строки, его пересекающие, т.е. как раз 3,4,5.
Можно задавать несколько несмежных диапазонов, выделяя их мышкой при нажатой клавише Ctrl. Скрипт обработает все строки, которые так или иначе проходят через эти диапазоны.
Для удобного запуска скрипта в верхнее меню добавлен пользовательский пункт "МОЁ МЕНЮ" (с соответствующим подпунктом). Оно появится либо автоматически после перезагрузки файла, либо после принудительного запуска функции onOpen.
[vba]
Код
function onOpen() { var ui = SpreadsheetApp.getUi(); ui.createMenu('МОЁ МЕНЮ') .addItem('Настроить высоту строк по текущему выделению', 'setManyRowsAutoresizeAndRowheight') .addToUi(); }
function setManyRowsAutoresizeAndRowheight() {
// прием от пользователя минимальной высоты строки var minHeight = Browser.inputBox("Введите минимальную высоту строки при автоподборе в пикс.:"); if (minHeight == "cancel") { Browser.msgBox("Пользователь отказался от продолжения."); return; } if (isNaN(minHeight)) { Browser.msgBox("Введенное значение не является числом."); return; } minHeight = Number(minHeight); if (minHeight < 2 || minHeight > 2000) { Browser.msgBox("Высота строки должна составлять от 2 до 2000 пикс."); return; }
// получаем список выделенных диапазонов (в частном случае состоящий из одного диапазона) var sheet = SpreadsheetApp.getActiveSheet(); var activeRangeList = sheet.getActiveRangeList();
// формирование массива номеров строк - во время перебора списка диапазонов var rows = []; activeRangeList.getRanges().forEach(function(rng,i,a) { for(var i=rng.getRow(); i<rng.getRow()+rng.getNumRows(); i++) { rows.push( String(i) ) }; });
А можете переделать скрипт под какую то конкретную строку на конкретном листе? Ну к примеру сделать чтоб на листе с названием "формат" скрипт поменял форматирование 3, 4 и 5 стороки?
Переделал. Скрипт ниже форматирует выбранные строки на ЛЮБОМ листе файла, АКТИВНОМ перед выполнением скрипта. Минимальная высота запрашивается через inputBox во время выполнения.
Выбор строк происходит по текущему выделению, т.е. форматируются все строки, "проходящие" через текущее выделение. Например, выделен диапазон C3:D5 - будут отформатированы все строки, его пересекающие, т.е. как раз 3,4,5.
Можно задавать несколько несмежных диапазонов, выделяя их мышкой при нажатой клавише Ctrl. Скрипт обработает все строки, которые так или иначе проходят через эти диапазоны.
Для удобного запуска скрипта в верхнее меню добавлен пользовательский пункт "МОЁ МЕНЮ" (с соответствующим подпунктом). Оно появится либо автоматически после перезагрузки файла, либо после принудительного запуска функции onOpen.
[vba]
Код
function onOpen() { var ui = SpreadsheetApp.getUi(); ui.createMenu('МОЁ МЕНЮ') .addItem('Настроить высоту строк по текущему выделению', 'setManyRowsAutoresizeAndRowheight') .addToUi(); }
function setManyRowsAutoresizeAndRowheight() {
// прием от пользователя минимальной высоты строки var minHeight = Browser.inputBox("Введите минимальную высоту строки при автоподборе в пикс.:"); if (minHeight == "cancel") { Browser.msgBox("Пользователь отказался от продолжения."); return; } if (isNaN(minHeight)) { Browser.msgBox("Введенное значение не является числом."); return; } minHeight = Number(minHeight); if (minHeight < 2 || minHeight > 2000) { Browser.msgBox("Высота строки должна составлять от 2 до 2000 пикс."); return; }
// получаем список выделенных диапазонов (в частном случае состоящий из одного диапазона) var sheet = SpreadsheetApp.getActiveSheet(); var activeRangeList = sheet.getActiveRangeList();
// формирование массива номеров строк - во время перебора списка диапазонов var rows = []; activeRangeList.getRanges().forEach(function(rng,i,a) { for(var i=rng.getRow(); i<rng.getRow()+rng.getNumRows(); i++) { rows.push( String(i) ) }; });