Stream

Join this community to post or comment

Максим Стоянов (stomaks)

Полезные примеры  - 
 
Хочу представить Вам свою программу.

Домашняя бухгалтерия в Google Таблице - простая и удобная программа для учета и анализа личных финасов.

home-bookkeeping-in-google-table.blogspot.com
 ·  Translate
Официальный сайт программы Домашняя бухгалтерия в Google Таблице.
2
1
оксана кондрашина's profile photo
Add a comment...

Alexander Ivanov
moderator

Обсуждение  - 
 
Интересно, насколько глубока их интеграция?
 ·  Translate
1
Add a comment...

Сергей Костюкевич

Уголок взаимопомощи  - 
 
Всем доброго времени суток. Не знаю, в то ли сообщество пишу (уже запутался). У меня возник вопрос. Может быть кто-то подскажет варианты решения.
Есть у меня прайс лист, который хранится на гугл диске в виде гугл таблицы. Цены в этом прайсе я формирую исходя из нескольких прайсов поставщиков.
Мне надоело искать и проставлять цены на нужные мне позиции вручную, и я решил автоматизировать этот процесс. Прайсы заливаю на гугл.диск, с конвертацией из .xls в гугл таблицы. Написал небольшой скрипт, который парсит эти прайсы и подставляет значения в мой. Поиск необходимых позиций в прайсах-донорах происходит по именованным диапазонам.
Прайсы у поставщиков обновляются каждый день, соответственно каждый день я вынужден заливать их на гугл диск. Сейчас делаю так:
1) Скачиваю прайс-донор на ПК в .xls
2) Захожу в прайс-донор(который уже вчерашний) на гугл диске
3) Делаю импорт с добавлением нового листа.
4) Переношу именованные диапазоны на новый лист.
Процесс получается менее трудоемким, чем обновлять вручную, но хотелось бы избавиться и от рутины скачивания/заливания/переназначения именованных диапазонов.
Теперь вопросы:
1) Есть ли возможность в с помощью скрипта скачивать прайс с сайтов поставщиков и заливать его на диск, конвертируя в гугл таблицу?
2) Может быть у кого-то есть другое виденье процесса? Другой подход?
 ·  Translate
1
Сергей Костюкевич's profile photoAlexander Ivanov's profile photo
5 comments
 
+Сергей Костюкевич , скрипты обладают некоторыми ограничениями, которые могут быть критичными. Например, размер загружаемого/отправляемого файла не может быть 10Мб. Это вам точно придется учитывать.
 ·  Translate
Add a comment...

Иван Игнатов

Уголок взаимопомощи  - 
 
Добрый день.
Подскажите каким Макаром можно скриптом в таблицах покрасить часть текста в строке?
textRED normaltext textGreen
 ·  Translate
1
Alexey Isachenko's profile photoИван Игнатов's profile photo
2 comments
 
Понятно. Спасибо большое за столь быстрый ответ.
 ·  Translate
Add a comment...
 
Добрый день!
Подскажите новичку. Есть ID файла/документа. Нужно проверить существует такой файл/документ или нет. Перечитал всю справку и кроме isTrashed() ничего путного не нашел. isTrashed() к сожалению решает требуемую проблему лишь частично.
 ·  Translate
1
Alexander Ivanov's profile photoАндрей Гуртовой's profile photo
5 comments
 
+Alexander Ivanov Спасибо! Все работает как нужно. Сейчас буду разбираться почему у меня не заработало.
 ·  Translate
Add a comment...

Игорь Белозеров

Уголок взаимопомощи  - 
 
Прошу помощи найти решение для автоподстановки заглавной буквы после точки используя Gmail. Может кто-то уже использует какое-нибудь решение? Буду благодарен за помощь. 
 ·  Translate
1
Игорь Белозеров's profile photoAlexander Ivanov's profile photo
3 comments
 
Какова область применения фичи?
 ·  Translate
Add a comment...

Pavel Shcherbakov

Работа  - 
 
Добрый вечер друзья! Нужен человек на разработку небольшой CRM системы для детского центра. Разработка планируется поэтапной. На данный момент есть добавление клиентов. В первую очередь нужно добавление абонементов, Запись ребенка в группу, Сетка расписания групп с записанными в них клиентами.
 ·  Translate
2
Pavel Shcherbakov's profile photo
8 comments
 
+Андрей Польшин Спасибо за предложение. Drupal не рассматриваю.
 ·  Translate
Add a comment...

Сергей Костюкевич

Уголок взаимопомощи  - 
 
Здравствуйте. Я на днях начал изучать google apps script, сразу на практике. Решил сделать собственную форму, которую будут заполнять менеджеры, а информация будет заноситься в таблицы. Форму хочу развернуть как веб-приложение. И всё вроде бы ничего, но наткнулся на вот такую проблему: по моей задумке, есть кнопка "Добавить позицию", при нажатии на которую, срабатывает функция, которая находит <div> с позицией и копирует его содержимое, добавляя еще один блок с позицией. В стандартной связке html+js это сделать элементарно, а вот здесь я застрял. Не находит у меня вообще никакие элементы по id. Помогите осознать, что я делаю не так.
 ·  Translate
1
Alexey Isachenko's profile photoСергей Костюкевич's profile photo
2 comments
 
Прошу прощения, что не туда пишу.
 ·  Translate
Add a comment...

Don Kixot

Уголок взаимопомощи  - 
 
Хотелось бы кусочка кода показывающего как это можно связать
 ·  Translate
1
Alexander Ivanov's profile photoSergey Shvetsov's profile photo
11 comments
 
Спасибо, Александр!
 ·  Translate
Add a comment...

Илья Юрьевич

Уголок взаимопомощи  - 
 
Доброго времени суток! Не могу решить простую задачу (на Джава скрипт ранее не программировал, а учить сначала его что бы потом учиться скриптить на гугл скрипт помоему довольно странно). Так вот, очень
простая задача есть таблица которая заполняется с помощью форм. 9 столбцов, и постепенноое заполнение строк. Необходимо что бы при количестве строк больше 15 и первая строка вырезалась из этой таблицы и вставлялась другую таблицу (Архив)
Я перерыл хабр и хакер, видел функцию удаления строки, но все равно слабо представляю что должен написать, что бы это все работало=( Пожалуйста помогите.
 ·  Translate
1
Alexey Isachenko's profile photoAlexander Ivanov's profile photo
Add a comment...

Роман Савкив

Уголок взаимопомощи  - 
 
Коллеги, добрый день!

Хочу уточнить у знающих можно ли доработать скрипт и возможно кому-то пригодятся мои наработки... Есть форма подачи заявки на обучение (mipk.by/zayavki-fsn). Форма не генерируется скриптом, а использует значения name и id из стандартной Google Form. При отправке формы javascript переадресовывает пользователя на страницу thanks.html.

Собственно сам скрипт сортировки заявок:

function onFormSubmit(e) {

var fio_student = e.namedValues["ФИО слушателя"];
var email = e.namedValues["Контактный email"];
var phone = e.namedValues["Телефон слушателя"];
var napravlenie_obucheniya = e.namedValues["Направление обучения"];
var organizaciya = e.namedValues["Организация"];
var adres_organizacii = e.namedValues["Адрес организации или физического лица"];
var fio_ispolnitelya = e.namedValues["ФИО исполнителя"];
var telefon_ispolnitelya = e.namedValues["Телефон исполнителя"];


// Получаем дату в нужном формате на русском языке, используя moment-with-locale.js

moment.locale('ru');
var d = moment().format("DD MMMM YYYY");
Logger.log(moment(d).format('LL'));


// Ложим полученные данные в общую таблицу с возможностью добавлять заявки с факса и почты.

var ss = SpreadsheetApp.openById("SPREADSHEET_ID");
var sheet = ss.getSheetByName("Все заявки на обучение");
var nomer_stroki = sheet.getLastRow()+1;
var uchetniy_nomer = nomer_stroki;

sheet.getRange('A'+nomer_stroki).setValue(uchetniy_nomer);
sheet.getRange('B'+nomer_stroki).setValue(d);
sheet.getRange('C'+nomer_stroki).setValue(fio_student);
sheet.getRange('D'+nomer_stroki).setValue(email);
sheet.getRange('E'+nomer_stroki).setValue(phone);
sheet.getRange('F'+nomer_stroki).setValue(napravlenie_obucheniya);
sheet.getRange('G'+nomer_stroki).setValue(organizaciya);
sheet.getRange('H'+nomer_stroki).setValue(adres_organizacii);
sheet.getRange('I'+nomer_stroki).setValue(fio_ispolnitelya);
sheet.getRange('J'+nomer_stroki).setValue(telefon_ispolnitelya);


// Сортировка заявок по направлениям
// Направления обучения Парфеновой Елены Александровны

if (napravlenie_obucheniya == "Главный инженер проекта" || napravlenie_obucheniya == "Главный архитектор проекта") {
var ss = SpreadsheetApp.openById("SPREADSHEET_ID");
var sheet = ss.getSheetByName("ГИП, ГАП");
var nomer_stroki = sheet.getLastRow()+1;

sheet.getRange('A'+nomer_stroki).setValue(uchetniy_nomer);
sheet.getRange('B'+nomer_stroki).setValue(d);
sheet.getRange('C'+nomer_stroki).setValue(fio_student);
sheet.getRange('D'+nomer_stroki).setValue(email);
sheet.getRange('E'+nomer_stroki).setValue(phone);
sheet.getRange('F'+nomer_stroki).setValue(napravlenie_obucheniya);
sheet.getRange('G'+nomer_stroki).setValue(organizaciya);
sheet.getRange('H'+nomer_stroki).setValue(adres_organizacii);
sheet.getRange('I'+nomer_stroki).setValue(fio_ispolnitelya);
sheet.getRange('J'+nomer_stroki).setValue(telefon_ispolnitelya);

}

else if (napravlenie_obucheniya == "Главный инженер проекта (связь, сигнализация)") {
var ss = SpreadsheetApp.openById("SPREADSHEET_ID");
var sheet = ss.getSheetByName("ГИП - связь и сигнализация");

var nomer_stroki = sheet.getLastRow()+1;

sheet.getRange('A'+nomer_stroki).setValue(uchetniy_nomer);
sheet.getRange('B'+nomer_stroki).setValue(d);
sheet.getRange('C'+nomer_stroki).setValue(fio_student);
sheet.getRange('D'+nomer_stroki).setValue(email);
sheet.getRange('E'+nomer_stroki).setValue(phone);
sheet.getRange('F'+nomer_stroki).setValue(napravlenie_obucheniya);
sheet.getRange('G'+nomer_stroki).setValue(organizaciya);
sheet.getRange('H'+nomer_stroki).setValue(adres_organizacii);
sheet.getRange('I'+nomer_stroki).setValue(fio_ispolnitelya);
sheet.getRange('J'+nomer_stroki).setValue(telefon_ispolnitelya);
}

else if (napravlenie_obucheniya == "Главный специалист - связь и сигнализация" || napravlenie_obucheniya == "Начальник ПКО - связь и сигнализация") {
var ss = SpreadsheetApp.openById("SPREADSHEET_ID");
var sheet = ss.getSheetByName("Главспецы, ПКО - связь и сигнализация");

var nomer_stroki = sheet.getLastRow()+1;

sheet.getRange('A'+nomer_stroki).setValue(uchetniy_nomer);
sheet.getRange('B'+nomer_stroki).setValue(d);
sheet.getRange('C'+nomer_stroki).setValue(fio_student);
sheet.getRange('D'+nomer_stroki).setValue(email);
sheet.getRange('E'+nomer_stroki).setValue(phone);
sheet.getRange('F'+nomer_stroki).setValue(napravlenie_obucheniya);
sheet.getRange('G'+nomer_stroki).setValue(organizaciya);
sheet.getRange('H'+nomer_stroki).setValue(adres_organizacii);
sheet.getRange('I'+nomer_stroki).setValue(fio_ispolnitelya);
sheet.getRange('J'+nomer_stroki).setValue(telefon_ispolnitelya);
}

else if (napravlenie_obucheniya == "Главный инженер - устройство слаботочных сетей и систем" || napravlenie_obucheniya == "Начальник ПТО - устройство слаботочных сетей и систем") {
var ss = SpreadsheetApp.openById("SPREADSHEET_ID");
var sheet = ss.getSheetByName("ГИ, ПТО - слаботочные сети");

var nomer_stroki = sheet.getLastRow()+1;

sheet.getRange('A'+nomer_stroki).setValue(uchetniy_nomer);
sheet.getRange('B'+nomer_stroki).setValue(d);
sheet.getRange('C'+nomer_stroki).setValue(fio_student);
sheet.getRange('D'+nomer_stroki).setValue(email);
sheet.getRange('E'+nomer_stroki).setValue(phone);
sheet.getRange('F'+nomer_stroki).setValue(napravlenie_obucheniya);
sheet.getRange('G'+nomer_stroki).setValue(organizaciya);
sheet.getRange('H'+nomer_stroki).setValue(adres_organizacii);
sheet.getRange('I'+nomer_stroki).setValue(fio_ispolnitelya);
sheet.getRange('J'+nomer_stroki).setValue(telefon_ispolnitelya);
}



// Отправляем письмо пользователю

MailApp.sendEmail({
to: email[0],
subject: "Заявка на обучение принята!",
htmlBody: "Уважаемый, " + fio_student + ", ваша заявка на обучение на факультете строительства и недвижимости МИПК и ПК БНТУ с <strong>учетным номером " + uchetniy_nomer + "</strong> по направлению <strong>" + napravlenie_obucheniya + "</strong> успешно зарегистрирована!<br><br>По мере формирования группы на указанный вами почтовый адрес будут высланы вызов на обучение и договор.<br><br> График и сроки повышения квалификации доступны <a href='http://mipk.by/grafik-obucheniya-fsn.html' title='Повышение квалификации'>тут &gt;&gt;&gt;</a>.",

});

}


Скрипт работает, заявки идут... сортируются и складываются методистам по таблицам в листы, соответствующие направлениям обучения, и все бы ничего. Но потенциальные слушатели люди, люди которые могут отправить одну и ту же заявку 10 раз!!! Собственно и вопрос - можно ли добавить в скрипт проверку по ФИО и направлению обучения слушателя из уже существующих заявок в общей таблице и если такая заявка уже есть, то ничего никуда не записывать?

Буду благодарен за советы.
 ·  Translate
4
2
Роман Савкив's profile photoКУ ВРМЦЗО's profile photoEvgeny Dronov's profile photoAlex Dobrov's profile photo
4 comments
 
Еше раз спасибо за тему.
 ·  Translate
Add a comment...

About this community

Русскоязычная группа для представителей бизнеса, желающих использовать Google Apps и администраторов Google Apps, использующих эти технологии на работе и дома. Также, большое внимание мы уделяем Google Apps Script и его использованию в домене. Будьте внимательны, Google Apps - это не все приложения Google, а отдельный бизнес продукт. Если вас интересует все, что связано с программированием с использованием Google технологий, то добро пожаловать в сообщество Google Developers Group.
 
День добрый! Как в Google Таблицах сделать блокировку на диапазон ячеек в определенное время, а не ручную, как сейчас.
Спасибо!
 ·  Translate
1
Alexander Ivanov's profile photoВладимир Радченко's profile photo
6 comments
 
+Alexey Isachenko
Спасибо за ответы! Верно Вы сказали, что блокировку нужно делать от лица владельца документа.
 ·  Translate
Add a comment...

Alexander Ivanov
moderator

Обсуждение  - 
 
Анализ связей между сотрудниками школы на основе их взаимодействия в домене Google Apps для образования (GAfE)
В работе представлен метод, позволяющий на основе совместной сетевой деятельности участников по созданию и редактированию документов воссоздавать структуру отношений между сотрудниками школьной организации.
 ·  Translate
3
Add a comment...

Alexander Ivanov
moderator

Обсуждение  - 
 
Очень ценный обзор для того, кто принимает решения по сервисам. Конечно же, не рассмотрены все аспекты, и важными могут стать совершенно иные аргументы, но обратить внимание на точку зрения стоит.
Мне нравится, что Classroom использует Диск Google. Благодаря этому можно увидеть, как сам Google представляет себе работу сервисов со своими сервисами.
Важнейшее различие в сервисах: Moodle - открытый проект, Classroom - проект частный.
 ·  Translate
 
Сравниваем LMS Moodle и Google Classroom. Спасибо всем, кто принял участие в обсуждении этой темы в сообществе!
 ·  Translate
7
1
Alexander Ivanov's profile photoМария Владимировна Кривенькая's profile photo
 
Рекоммендую комментарии к оригинальному посту.
 ·  Translate
Add a comment...

Олег Абрамов

Уголок взаимопомощи  - 
 
Коллеги, нашёл баг в Gmail, прошу поддержать на форумах службы поддержки.

https://connect.googleforwork.com/ideas/4553
 ·  Translate
3
Олег Абрамов's profile photoTatyana Inarsh's profile photo
7 comments
 
+Олег Абрамов Поставила. Удачи в решении! :-) 
 ·  Translate
Add a comment...

sunburstchannel

Обсуждение  - 
 
Есть ли возможность  в Google Spreadsheet поставить чекбокс (или что нибудь подобное) для того чтобы блокировать выделенный диапазон ячеек. Т.е. так чтобы к примеру "SUM" не учитывал данную ячейку(строку) в подсчете .
Примерно то ,что хочу показал на картинке
 ·  Translate
1
Alexander Ivanov's profile photoAlexey Isachenko's profile photo
3 comments
 
Если использовать subtotal(), то она, например, может игнорировать промежуточные итоги (как настроите)
 ·  Translate
Add a comment...
 
Добрый день.

Возможно ли в Гугл Диск осуществлять поиск по содержимому файлов - например в текстовых документах, в картинках, pdf?
Может быть есть какие либо расширения для Гугл Диска?
 ·  Translate
1
1
Сергей Борисычев's profile photoAlexander Ivanov's profile photoAlex Dobrov's profile photo
16 comments
 
+Сергей Борисычев , попробуйте написать в Google, используя Client UID. Они должны среагировать нормально на такой запрос.
 ·  Translate
Add a comment...

Alexey Isachenko
owner

Обсуждение  - 
 
Решает проблему отваливающихся стилей при публикации Google Документа.
 ·  Translate
Google Docs are nice, but they look ugly when published to the web. Well... not anymore!
12
4
Alex Dobrov's profile photoElena S.'s profile photoTatyana Inarsh's profile photoSerghei Nicolaescu's profile photo
4 comments
 
+Alexander Ivanov, да я не особо и жалуюсь
 ·  Translate
Add a comment...

Don Kixot

Уголок взаимопомощи  - 
 
Парни выручайте плиз есть маленькая проблемка сам не программист вообще никак не знаю как сделать внедрение в Google Form заранее сформированного списка из google шит или текстовика (иногда требуется обновлять чеклист в форме редактировать саму форму не очень удобно) Заранее спасибо
 ·  Translate
3
Сергей Генрих's profile photoDon Kixot's profile photo
4 comments
 
спасибо попробую унять мою дислексию и понять что откуда.
 ·  Translate
Add a comment...

Anatoly Rudnitsky

Уголок взаимопомощи  - 
 
Добрый день! Помогите решить задачу - есть скрипт, который создает список всех документов (*.pdf) которые расположены в конкретной папке Google Drive. Но есть одно но — если существует две или более папки с одинаковыми названиями (в разных подпапках) то файлы которые находится в них также попадают в список.

function listFileInFolder() {
var folderName = 'Имя папки'
var folder, data, file;
var folders = DriveApp.getFolders();
var sheet = SpreadsheetApp.getActiveSheet();
sheet.clear();
sheet.appendRow( ["Name", "Html skript"] );
while (folders.hasNext()) {
var folder = folders.next();
if (folder.getName() == folderName) {
var contents = folder.getFilesByType('application/pdf')
while(contents.hasNext()) {
file = contents.next();
data = [
file.getName(),
'=HYPERLINK("https://drive.google.com/file/d/' + file.getId() + '/view?usp=sharing";"Просмотр")'
];
sheet.appendRow(data);
}
}
}
}

Есть следующий вариант, но он работает если только нужная папка находится в корне Google Drive:

function listFileInFolder() {
var folderName = 'Имя папки'
var folder, data, file;
var folders = DriveApp.getFoldersByName(folderName).next();
var folder = folders.getFiles();
var sheet = SpreadsheetApp.getActiveSheet();
sheet.clear();
sheet.appendRow( ["Name", "Html skript"] );
var contents = folder.getFilesByType('application/pdf')
while(contents.hasNext()) {
file = contents.next();
data = [
file.getName(),
'=HYPERLINK("https://drive.google.com/file/d/' + file.getId() + '/view?usp=sharing";"Просмотр")'
];
sheet.appendRow(data);
}
}
 ·  Translate
3
1
Anatoly Rudnitsky's profile photoAlex Dobrov's profile photo
4 comments
 
+Anatoly Rudnitsky if (folder.getId() == folderID)
Add a comment...