<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; VBS + Google Docs]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=9629&amp;type=atom" />
	<updated>2014-07-03T06:00:11Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=9629</id>
		<entry>
			<title type="html"><![CDATA[Re: VBS + Google Docs]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=84461#p84461" />
			<content type="html"><![CDATA[<p><strong>dab00</strong>, спасибо.<br />Добрался я таки до гугледоков.</p><p><strong>dab00</strong>, подскажи, пожалуйста, как развить тему.<br />Мне нужно передавать несколько параметров, что-то будет строкой, что-то числом (с запятой)</p><p>В данный момент скрипт выглядит так<br /></p><div class="codebox"><pre><code>function doGet(e) {  
  if (!e.parameters.name) { //  в запросе отсутствует параметр name
    return ContentService.createTextOutput(JSON.stringify({result: &#039;wrong params Name&#039;})).setMimeType(ContentService.MimeType.JSON);
  }
  if (!e.parameters.param2) { //  в запросе отсутствует параметр shop
    return ContentService.createTextOutput(JSON.stringify({result: &#039;wrong params Param2&#039;})).setMimeType(ContentService.MimeType.JSON);
  }
  
  var 
    sheetId = &#039;1P9-G166-YHL7w0Sw0hyF0oXGtvnPpiMzFHmTYtt81-w&#039;, // id вашей таблицы
    Var1 = String(e.parameters.param2),
    ss = SpreadsheetApp.openById(sheetId); // таблица
  
  if (ss.getSheetByName(e.parameters.name)) { // лист с таким именем существует
    return ContentService.createTextOutput(JSON.stringify({result: &#039;sheet exists&#039;})).setMimeType(ContentService.MimeType.JSON);
  }
  
  // создаем лист и в ячейку A1 вставляем &#039;Hello!&#039;
  ss.insertSheet(String(e.parameters.name)).getRange(1, Var1).setValue(&#039;Hello!&#039;);
  return ContentService.createTextOutput(JSON.stringify({result: &#039;ok&#039;})).setMimeType(ContentService.MimeType.JSON);
}</code></pre></div><p>и не работает<br />Я пробовал<br />https://script.google.com/macros/s/AKfycby1_ZAvRNxS3qkiAqyvW1d-So_5TDlpecM9pXJXkkP3eqbIwzZl/exec?name=2?param2=3<br />и так<br />https://script.google.com/macros/s/AKfycby1_ZAvRNxS3qkiAqyvW1d-So_5TDlpecM9pXJXkkP3eqbIwzZl/exec?name=2,param2=3</p><p>Ругается на отсутствие параметра.<br />Если проверку закомментировать, то создаётся лист &quot;2?Param2=3&quot; и &quot;2,Param2=3&quot;<br />В общем, нужно где-то раздобыть внятный мануал, поиски по https://developers.google.com/ не привели ни к чему, вероятно из-за того, что сам не знаю, что искать.<br />А ведь ещё нужно с преобразованием типов разбираться и вообще с синтаксисом...</p><p>Буду благодарен за любую помощь.</p>]]></content>
			<author>
				<name><![CDATA[MikeSh]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24507</uri>
			</author>
			<updated>2014-07-03T06:00:11Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=84461#p84461</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS + Google Docs]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=83686#p83686" />
			<content type="html"><![CDATA[<p>Код в Вашу таблицу положил. Дальше:<br />- Открываем таблицу - Инструменты - Редактор скриптов<br />- Нажимаем кнопку &quot;Выполнить&quot; (необходимо сделать один раз для авторизации) - Требуется авотризация - Продолжить - Принять - Не обращаем внимания на ошибку<br />- Файл - Версии - Сохранить новую версию - ОК<br />- Публикация - Развернуть как веб-приложение - Кто имеет доступ к приложению - Все, включая анонимных пользователей - Развернуть<br />- Копируем Текущий URL веб-приложения - Вставляем в адресную строку браузера, добавляем параметр: ?name=june<br />Получится типа: https://script.google.com/macros/s/AKfycbx6_Cnq8KN4eh3PFMNLxJExasVKyFkNJ6wab6xHjhIxWVUFAgk/exec?name=june</p><p>Код:<br /></p><div class="codebox"><pre><code>
function doGet(e) {  
  if (!e.parameters.name) { //  в запросе отсутствует параметр name
    return ContentService.createTextOutput(JSON.stringify({result: &#039;wrong params&#039;})).setMimeType(ContentService.MimeType.JSON);
  }
  var sheetId = &#039;1GtWcQorfBtpa0AZRUkAHdlj2OD0XJLlAJeiyDOSc1RQ&#039;, // id вашей таблицы
      ss = SpreadsheetApp.openById(sheetId); // таблица
  
  if (ss.getSheetByName(e.parameters.name)) { // лист с таким именем существует
    return ContentService.createTextOutput(JSON.stringify({result: &#039;sheet exists&#039;})).setMimeType(ContentService.MimeType.JSON);
  }
  
  // создаем лист и в ячейку A1 вставляем &#039;Hello!&#039;
  ss.insertSheet(String(e.parameters.name)).getRange(1, 1).setValue(&#039;Hello!&#039;);
  return ContentService.createTextOutput(JSON.stringify({result: &#039;ok&#039;})).setMimeType(ContentService.MimeType.JSON);
}
</code></pre></div><p>Так как скрипт в таблице создал я, не уверен, что вы увидите код, если нет - откройте редактор скриптов, скопируйте код отсюда, дальше по инструкции.</p>]]></content>
			<author>
				<name><![CDATA[dab00]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27085</uri>
			</author>
			<updated>2014-06-05T16:46:50Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=83686#p83686</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS + Google Docs]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=83673#p83673" />
			<content type="html"><![CDATA[<p>Право слово, даже не удобно.<br />Я не считаю себя ни глупым, ни ленивым, но вот не могу разобраться и всё тут.<br />Вы можете продемонстрировать, как это должно работать?</p><p><a href="https://docs.google.com/spreadsheets/d/1GtWcQorfBtpa0AZRUkAHdlj2OD0XJLlAJeiyDOSc1RQ/edit?usp=sharing">https://docs.google.com/spreadsheets/d/ … sp=sharing</a> - пустая таблица, отшаренная на полную.</p><p>Спасибо.</p>]]></content>
			<author>
				<name><![CDATA[MikeSh]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24507</uri>
			</author>
			<updated>2014-06-04T19:05:23Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=83673#p83673</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS + Google Docs]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=83603#p83603" />
			<content type="html"><![CDATA[<p>1) можно Инструменты - Редактор скриптов - тогда скрипт будет &quot;встроен&quot; в таблицу, можно создать отдельно: Диск - Создать - Скрипт, если в первый раз - нужно подключить: Диск - Создать - Подключить другие приложения - в поисковой строке пишем Google Apps Script</p><p>2) не понял вопрос, выше ссылку давал - посмотрите - там несколько несложных примеров запросов есть</p><p>3) для того, чтобы развернуть скрипт в качестве веб-приложения, в редакторе скриптов: <br />- Файл - Версии - Сохранить новую версию<br />- Публикация - Развернуть как веб-приложение - Кто имеет доступ к приложению - Все, включая анонимных пользователей<br />Таким образом скрипт видят все, для авторизации отправляем в запросе какой нибудь параметр типа password, в скрипте проверяем, если валидация не прокатила - досвидос. Это самый простой вариант. </p><p>Можно авторизоваться с помощью OAuth 2.0: получать токен авторизации на клиенте, к примеру с помощью <a href="https://developers.google.com/compute/docs/api/javascript-guide">Javascript Client Library</a>, отправлять его в запросе, а на сервере (в скрипте) валидировать токен отправляя запрос в адрес <a href="https://developers.google.com/accounts/docs/OAuth2?hl=ru">соответствующего API</a>, но это больше подойдет для браузерных приложений.</p><p>Можно сделать: Кто имеет доступ к приложению - Только я, в таком случае прежде чем отправлять запрос нужно авторизоваться с помощью аккаунта Google. <br />На VBS я такую авторизацию не делал, приходилось на powershell, если интересно могу показать код. <br />Но по моему опыту первого варианта в большинстве случаев достаточно, с авторизацией с помощью аккаунта Google -&nbsp; <br />если домен Google, клинические политики безопасности и пр.</p><p>Пожалуйста.</p>]]></content>
			<author>
				<name><![CDATA[dab00]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27085</uri>
			</author>
			<updated>2014-06-02T16:54:45Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=83603#p83603</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS + Google Docs]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=83593#p83593" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>dab00 пишет:</cite><blockquote><p>Достаточно несколько строчек <a href="https://developers.google.com/apps-script/">Google Apps Script</a> с использованием <a href="https://developers.google.com/apps-script/reference/spreadsheet/">Spreadsheet Service</a>.</p></blockquote></div><p>Как и следовало ожидать, просто не получилось.<br />1) Как создать скрипт? Инструменты - Редактор скриптов?<br />2) Как нужно передавать запросы?<br />3) Как использовать авторизацию или отключить её использование?</p><p>Спасибо.</p>]]></content>
			<author>
				<name><![CDATA[MikeSh]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24507</uri>
			</author>
			<updated>2014-06-02T09:58:21Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=83593#p83593</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS + Google Docs]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=83570#p83570" />
			<content type="html"><![CDATA[<p>Google API в Вашем случае на мой взгляд перебор. Достаточно несколько строчек <a href="https://developers.google.com/apps-script/">Google Apps Script</a> с использованием <a href="https://developers.google.com/apps-script/reference/spreadsheet/">Spreadsheet Service</a>. <br />Пример:<br />- создаем скрипт, пишем код функции doGet - имя функции важно:<br /></p><div class="codebox"><pre><code>
function doGet(e) {  
  if (!e.parameters.name) return; //  в запросе отсутствует параметр name
  var sheetId = &#039;1aqFA8ylaZpgqBBObXSxQNUDPBXIzCzbFy3FYs8mXE_o&#039;, // id вашей таблицы
      ss = SpreadsheetApp.openById(sheetId); // таблица
  if (ss.getSheetByName(e.parameters.name)) return;// лист с таким именем существует
  // создаем лист и в ячейку A1 вставляем &#039;Hello!&#039;
  ss.insertSheet(e.parameters.name).getRange(1, 1).setValue(&#039;Hello!&#039;);
}
</code></pre></div><p>- разворачиваем в качестве веб-приложения, после чего отправляем в адрес развернутого скрипта запросы из чего Вам удобнее - WSH, powershell и т.п.<br />Если тема Google Apps Script заинтересовала - у меня на блоге есть <a href="http://www.daspot.ru/search/label/Google%20Apps%20Script">несколько полезных постов по теме</a>. Удачи.</p>]]></content>
			<author>
				<name><![CDATA[dab00]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27085</uri>
			</author>
			<updated>2014-06-01T17:01:29Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=83570#p83570</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS + Google Docs]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=83397#p83397" />
			<content type="html"><![CDATA[<p>Пойду по первому пути, он наиболее быстрый.<br />Или тупик или результат.</p>]]></content>
			<author>
				<name><![CDATA[MikeSh]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24507</uri>
			</author>
			<updated>2014-05-27T19:09:00Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=83397#p83397</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS + Google Docs]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=83178#p83178" />
			<content type="html"><![CDATA[<p><strong>MikeSh</strong>, думаю есть 3 пути. <br />1) Связаться с автором примера <a href="http://danila.org.ua/about/">http://danila.org.ua/about/</a><br />2) Самому заняться исследованием запросов, которые отправляет сервис <a href="http://docs.google.com">docs.google.com</a>. Для удобства можно использовать мониторинг запросов встроенный во все современные браузеры.<br />3) Почитать документацию <a href="https://developers.google.com/google-apps/spreadsheets/">https://developers.google.com/google-apps/spreadsheets/</a></p><p>P.S По последней ссылке, где примеры кода на NET, <span class="bbu">рекомендую</span> нажать справа наверху вкладку <strong>Protocol</strong>, тогда можно увидеть отправляемые <strong>POST</strong> данные и примеры ответа сервера.</p>]]></content>
			<author>
				<name><![CDATA[Xameleon]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=8836</uri>
			</author>
			<updated>2014-05-21T06:23:21Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=83178#p83178</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS + Google Docs]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=83152#p83152" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Xameleon пишет:</cite><blockquote><p>А в чём сложность ? На чём остановились ? Дошёл до второго этапа - Получение списка листов. Дальше по аналогии вроде бы просто.</p></blockquote></div><p>Спасибо, взял из кода несколько удачных примеров.<br />Только дальше не совсем по аналогии.<br />На сколько я понимаю, это получен не список &quot;листов&quot;, а список &quot;книг&quot;.<br />А вот как получить лист из книги и (что-то мне подсказывает, что это ИДЛиста из примера), как его создать при необходимости и какую строку сформировать для записи значения - вот в чём вопрос.</p>]]></content>
			<author>
				<name><![CDATA[MikeSh]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24507</uri>
			</author>
			<updated>2014-05-20T14:28:58Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=83152#p83152</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS + Google Docs]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=83139#p83139" />
			<content type="html"><![CDATA[<p>А в чём сложность ? На чём остановились ? Дошёл до второго этапа - Получение списка листов. Дальше по аналогии вроде бы просто.</p><div class="codebox"><pre><code>
Option Explicit

Dim oHttpRequest
Set oHttpRequest = CreateObject(&quot;MSXML2.XMLHTTP&quot;)

Main()

Sub Main()
    Dim SID, LSID, Auth
    
    ClientLogin &quot;user@gmail.com&quot;, &quot;pass&quot;, &quot;wise&quot;, SID, LSID, Auth
    
    GetSpreadSheetsList Auth
    
    MsgBox &quot;Data saved to C:\DATA.xml&quot;
End Sub

Sub ClientLogin(ByVal Email, ByVal Passwd, ByVal service, ByRef SID, ByRef LSID, 

ByRef Auth)
    Dim aTextLines
    Dim sTextLine
    Dim aParams
    Dim sValue
    With oHttpRequest
        .open &quot;POST&quot;, &quot;https://www.google.com/accounts/ClientLogin&quot;, False
        .setRequestHeader &quot;Content-Type&quot;, &quot;application/x-www-form-urlencoded&quot;
        .send &quot;Email=&quot; &amp; Email &amp; &quot;&amp;Passwd=&quot; &amp; Passwd &amp; &quot;&amp;service=&quot; &amp; service &amp; 

&quot;&amp;source=Gulp-CalGulp-1.05&quot;
        if .status &lt;&gt; 200 Then Err.Raise vbObjectError + 1, &quot;ClientLogin&quot;, &quot;Server 

response status &quot; &amp; .status &amp; &quot; &quot; &amp; .statusText 
        aTextLines = Split(.responseText,vbLf)
    End With
    For Each sTextLine in aTextLines
        aParams = Split(sTextLine,&quot;=&quot;,2)
        If Ubound(aParams) = 1 Then
            sValue = Trim(aParams(1))
            Select Case Trim(aParams(0))
            Case &quot;SID&quot;
                SID = sValue
            Case &quot;LSID&quot;
                LSID = sValue
            Case &quot;Auth&quot;
                Auth = sValue
            End Select
        End if
    Next
End Sub

Sub GetSpreadSheetsList(ByVal Auth)
    Dim oXmlParser
    Set oXmlParser = CreateObject(&quot;MSXML2.DOMDocument&quot;)
    With oHttpRequest
        .open 

&quot;GET&quot;,&quot;https://spreadsheets.google.com/feeds/spreadsheets/private/full&quot;, False
        .setRequestHeader &quot;Content-Type&quot;,&quot;application/atom+xml&quot;
        .setRequestHeader &quot;Authorization&quot;, &quot;GoogleLogin auth=&quot; &amp; Auth
        .send
        oXmlParser.Load .responseBody
    End With
    oXmlParser.save &quot;C:\DATA.xml&quot;
End Sub
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Xameleon]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=8836</uri>
			</author>
			<updated>2014-05-20T10:24:28Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=83139#p83139</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[VBS + Google Docs]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=83115#p83115" />
			<content type="html"><![CDATA[<p>Добрый день.</p><p>Мне требуется скрипт, который бы подключался к Google Docs (Spreadsheet) и:<br />1) Создавал там лист с названием месяца, если такого листа ещё нет<br />2) Заполнял определённую ячейку данными</p><p>Я нашёл статью <a href="http://danila.org.ua/vyigruzka-tablichnogo-dokumenta-v-google-tab/">http://danila.org.ua/vyigruzka-tablichn … oogle-tab/</a>, но к сожалению она не полная и там есть ошибки в коде, хотя на видео под статьёй делается ровно то, что мне нужно.<br />По этой статье у меня получилось только авторизоваться, т.е. получить Маркер.</p><p>Кто-нибудь занимался подобным или, например, знает, где можно почитать?<br />Google API я пытался смотреть, но не нашёл ничего, что могло бы помочь. Не исключаю, что не так смотрел.</p><p>Заранее спасибо.</p>]]></content>
			<author>
				<name><![CDATA[MikeSh]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24507</uri>
			</author>
			<updated>2014-05-19T15:45:15Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=83115#p83115</id>
		</entry>
</feed>
