Script.google.com - куда дальше двигатся?
Здравствуйте
Для рабочих нужд понадобилось написать скрипт на платформе script.google.com, который бы добавлял страницу с указанным текстом на мой site.google.com/site/ сайт Рабочий шаблон добавления страницы уже есть: function createDemoPage() { var domain = 'yourdomain.com'; var site = 'your_site'; var pageName = 'script_center_demo'; var html = '<div><div style="margin-left:auto;margin-right:auto;' + 'display:block;font-size:18px;font-weight:bold;"><img alt="Scripts Logo"' + 'border="0" src="http://gascriptcenter.appspot.com/images/docs_apps_scripts-48.gif">' + ' Google Apps Script Center Project Page</div><div><p> </p>' + '<p style="font-size:14px;font-weight:bold;">Executive Summary</p>' + '<p>This project aims to....</p></div></div>'; var site = SitesApp.getSite(domain, site); site.createWebPage('Script Center Demo', pageName, html); }; Но как мне сделать следующую вещь? При переходе на адрес скрипта https://script.google.com/macros/s/.../exec выбивалась форма, или же я бы вводил нужные данные прямо в адрес как параметры https://script.google.com/macros/s/....ml=dlinyy_text И что бы все это работало. При запуске любого скрипта вне среды программирования выдает ошибку: Функцию сценария doGet не найдено В JS не секу практически вообще, к сожалению( Буду рад любой помощи! По возможности отблагодарю шоколадкой на WMZ |
В функции doGet добавляешь нужные компоненты, как-то так:
function doGet() { var app = UiApp.createApplication(); app.add(app.createHTML("Page title:<br>")); var textBox = app.createTextBox().setId('pageTitle').setName('pageTitle'); app.add(textBox); app.add(app.createHTML("<br>HTML:<br>")); var textArea = app.createTextArea().setId('htmlText').setName('htmlText'); app.add(textArea); app.add(app.createHTML("<br>")); var button = app.createButton('Create page'); app.add(button); var label = app.createLabel('The button was clicked.') .setId('statusLabel') .setVisible(false); app.add(label); var handler = app.createServerHandler('myClickHandler'); handler.addCallbackElement(label); handler.addCallbackElement(textBox); handler.addCallbackElement(textArea); button.addClickHandler(handler); return app; } В функции обработчике клика считываешь данные с полей: function myClickHandler(e) { var app = UiApp.getActiveApplication(); var pageTitle = e.parameter.pageTitle; var html = e.parameter.htmlText; createDemoPage(pageTitle, html); var label = app.getElementById('statusLabel'); label.setText('new page created'); label.setVisible(true); app.close(); return app; } Ну и переписываешь функцию создания страницы, чтобы она принимала нужные параметры: function createDemoPage(pageTitle, html) { var site = SitesApp.getSiteByUrl("https://sites.google.com/site/имя_сайта/"); site.createWebPage(pageTitle, (Math.random()+'').split('.')[1]+'', html); }; |
Это просто чудо!
Спасибо Вам большое:) Оставьте мне свой кошелек WMZ И можете еще подсказать, как также передавать параметр нужного сайта и параметр url страницы? Я добавил в doGet такое: app.add(app.createHTML("Page url:<br>")); var textBox = app.createTextBox().setId('pageUrl').setName('pageUrl'); app.add(textBox); app.add(app.createHTML("Site:<br>")); var textBox = app.createTextBox().setId('siteHref').setName('siteHref'); app.add(textBox); Но новые поля даже не появляются в обновленном скрипте:( Функцию добавления правил так: function createDemoPage(pageTitle, html, pageUrl, siteHref) { var site = SitesApp.getSiteByUrl("https://sites.google.com/site/"+siteHref+"/"); site.createWebPage(pageTitle, pageUrl, html); }; Это будет верным вариантом? Спасибо:) |
Цитата:
function doGet(e) { И можете внутри нее получать параметры так: var param1 = e.parameter.par1; var param2 = e.parameter.par2; В URL они будут выглядеть так: .../exec?par1=aaa&par2=bbb Цитата:
function doGet(e) { var app = UiApp.createApplication(); app.add(app.createHTML("Page title:<br>")); var textBox = app.createTextBox().setId('pageTitle').setName('pageTitle'); app.add(textBox); app.add(app.createHTML("<br>HTML:<br>")); var textArea = app.createTextArea().setId('htmlText').setName('htmlText'); app.add(textArea); app.add(app.createHTML("<br>")); app.add(app.createHTML("Page url:<br>")); var pageUrlTextBox = app.createTextBox().setId('pageUrl').setName('pageUrl'); app.add(pageUrlTextBox); app.add(app.createHTML("Site:<br>")); var siteHrefTextBox = app.createTextBox().setId('siteHref').setName('siteHref'); app.add(siteHrefTextBox); app.add(app.createHTML("<br>")); var button = app.createButton('Create page'); app.add(button); var label = app.createLabel('The button was clicked.') .setId('statusLabel') .setVisible(false); app.add(label); var handler = app.createServerHandler('myClickHandler'); handler.addCallbackElement(label); handler.addCallbackElement(textBox); handler.addCallbackElement(textArea); handler.addCallbackElement(pageUrlTextBox); handler.addCallbackElement(siteHrefTextBox); button.addClickHandler(handler); return app; } function myClickHandler(e) { var app = UiApp.getActiveApplication(); var pageTitle = e.parameter.pageTitle; var html = e.parameter.htmlText; var siteHref = e.parameter.siteHref; var pageUrl = e.parameter.pageUrl; createDemoPage(pageTitle, html, pageUrl, siteHref); var label = app.getElementById('statusLabel'); label.setText('new page created: ' + pageTitle); label.setVisible(true); app.close(); return app; } function createDemoPage(pageTitle, html, pageUrl, siteHref) { var site = SitesApp.getSiteByUrl("https://sites.google.com/site/"+siteHref+"/"); site.createWebPage(pageTitle, pageUrl, html); }; Цитата:
|
Большое спасибо)
|
Скрипт для гугль-диска
Дабы не плодить новых тем, спрошу здесь...
Решил попробовать гугл-диск как файловый хостинг, и сразу столкнулся с проблемой получения ссылки на файл, поскольку файлов овер чем... много, в общем. Рытье инета дало следующие результаты: вот тут http://catamobile.org.ua/drevovidnay...gle-drive.html есть скрипт, который выводит дерево с именами всех файлов на гуглдиске. Кириллические, правда, коверкает, но старому ДОСовцу :) это по барабану... Нашел еще вот что === Работа с Google Drive Google Apps Script может работать с файлами пользователя, размещенными на Google Drive. Этот скрипт выводит в консоль имена всех файлов пользователя: var files = DriveApp.getFiles(); while (files.hasNext()) { var file = files.next(); Logger.log(file.getName()); } К файлам можно применять несколько десятков различных методов. Вот некоторые из них: addEditor(“email пользователя”) — наделяет пользователя правами на редактирование файла; getOwner() — узнать владельца файла; makeCopy(“имя”, “путь”) — создать копию файла; getLastUpdated() — возвращает пользователя, который внес последнее изменение. === тянуто отсюда https://xakep.ru/2015/01/08/google-apps-script/ К сожалению, мои познания в гугльапи еще меньше, чем в джаваскрипте, посему прошу помощи/наставления на путь истинный - нужен скрипт для выведения, например, в таблицу всех файлов на гугль-диске с их урлами... В идеале с размерами, датами модификаций, скачиваний, с возможностью "натравить" скрипт на конкретную папку с подпапками... но это я уже зажрался... В общем ,нужна помощь (оплачиваемая в разумных пределах)... |
В опчем, пока копаю самостийно... Вышеприведенный код запустил, и в логах список файлов (имен) имею. Попытался вместо getName() влепить getPath() - обработчик ругается, не может такую функцию найти...
|
Цитата:
|
И таки где вы были вчера, когда поздно вечером я таки надыбал почти эту же штуку, только коряво переведенную гуглем на великий и могучий? :)
Вот ссылка https://translate.googleusercontent....A2hBdajb1xghhA В общем, путь я пока не выковырял, но getId() дает мне идентификатор, а слепить с его помощью прямую ссылку на файл - плевое дело. Таперича буду думать, как это все в табличку запихнуть... |
Цитата:
|
Часовой пояс GMT +3, время: 03:44. |