1 (изменено: belyankin12, 2016-12-29 12:20:51)

Тема: AHK: Работа с гугл-таблицами

Здравствуйте, форумчане. Суть в следующем: есть гугл-таблица которой я не владею, но у меня есть права редактирования. Гугл-таблица доступна для просмотра всем в интернете у кого есть ссылка. Мне нужно внести в таблицу несколько значений, как мне это сделать? Подойдут любые варианты: от работы через оффлайн-доступ, до прямого редактирования.

2

Re: AHK: Работа с гугл-таблицами

как мне это сделать

А почему бы для начала не прочитать правила форума/ветки?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

3

Re: AHK: Работа с гугл-таблицами

А почему бы не выключить режим сарказма а указать на ошибку конкретно? Перечитал правила (что делал и перед созданием), название правильное, предложения разделены и более-менее грамотны.

4

Re: AHK: Работа с гугл-таблицами

Обратите внимание на оформление заголовков.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

5 (изменено: belyankin12, 2016-12-25 20:31:27)

Re: AHK: Работа с гугл-таблицами

Так бы и сразу, сейчас изменю, спасибо за замечание.

6

Re: AHK: Работа с гугл-таблицами

Так же требуются точки в конце предложений.

belyankin12 пишет:

Перечитал правила

Начинаю в этом сомневаться.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

7

Re: AHK: Работа с гугл-таблицами

https://developers.google.com/sheets/api/

8

Re: AHK: Работа с гугл-таблицами

Спасибо большое, но есть ли что-то на русском?

9

Re: AHK: Работа с гугл-таблицами

Сомневаюсь.
Технический английский, конечно, стоит подучить.

10

Re: AHK: Работа с гугл-таблицами

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

11 (изменено: belyankin12, 2016-12-27 14:01:54)

Re: AHK: Работа с гугл-таблицами

Все таки мне трудно разобраться в том API, мой английский оставляет желать лучшего. Да и в языках программирования знаний у меня не так много: меня всегда кто-то учил . В общем я нашел другой способ: мне кажется он проще, но я не понимаю все равно как заставить скрипт обратится к веб-приложению. Вот ссылка на пост, который меня вдохновил ко всему этому: https://habrahabr.ru/sandbox/46965/. Для обращения скрипта к веб-приложению (код, указанный на сайте работает до 7-й строчки: там нету параметров p1 и p2, которые нужно указать в ссылке, как я понял. Но через браузер напрямую не работает), я использую следующий код, но к сожалению в таблице ничего не меняется:


query := "p1=123&p2=233"
url := "https://script.google.com/macros/s/AKfycbyfg6RO8K594sUlDmq2zUtY2ixm-rLgB9AVrv9KUAownoLk4NF4/exec?" . query . ""
whr := ComObjCreate("WinHttp.WinHttpRequest.5.1")
whr.Open("GET", url, true)
whr.Send()

Если вы знаете как заставить скрипт ввести хотя-бы дату в таблицу (дата вводится автоматически при активации, см. код на сайте), то это уже будет победа. Надеюсь на вашу помощь.

И ещё один вопрос, возможно не по теме, простите меня за это тогда и укажите на ошибку. Тот код веб-приложения, что указан на сайте, это какой язык программирования, чтобы я знал на какой форум обращаться за помощью?

12 (изменено: Malcev, 2016-12-27 16:56:29)

Re: AHK: Работа с гугл-таблицами

Все таки мне трудно разобраться в том API

Смысл такой  - надо аутентифицироваться через OAuth2:
https://developers.google.com/adwords/a … tion?hl=ru
https://habrahabr.ru/post/145988/
И потом через Get/Post/Put запросы получать, добавлять, изменять контент.

Тот код, что на сайте у меня работает.
Делал по шагам то, что написано там.

Тот код веб-приложения, что указан на сайте, это какой язык программирования

Там же написано:

Для этого воспользуемся Google App Script

13

Re: AHK: Работа с гугл-таблицами

Решил проблему с помощью веб-приложения-макросса. Нужно было написать макросс на яваскрипт и потом get запрос его запустить. Если нужно, могу скинуть коды сюда.

14

Re: AHK: Работа с гугл-таблицами

Пользователь, что мне отправил сообщение в ЛС (я узнал о нем благодаря почтовому роботу), я не знаю как отправлять сообщения в ЛС, потому скину все это сюда)).

Код веб-приложения-макросса:


function doGet(e)
{
  var sheet = SpreadsheetApp.openById("ссылка гугл таблицы");
  var d = new Date(), params = e.parameter;
  sheet.appendRow( ["", "", params["nick"], transliterate(params["reason"], true), params["source"]] ); // добавить новую строку ( ["¤чейка1", "¤чейка2", "¤чейка3", ...] )
}

transliterate = (
	function() {
		var
			rus = "щ ш ч ц ю ¤ Є ж ъ ы э а б в г д е з и й к л м н о п р с т у ф х ь".split(/ +/g),
			eng = "[[shh]] [[sh]] [[ch]] [[cz]] [[yu]] [[ya]] [[yo]] [[zh]] [[``]] [[y']] [[e`]] [[a]] [[b]] [[v]] [[g]] [[d]] [[e]] [[z]] [[i]] [[j]] [[k]] [[l]] [[m]] [[n]] [[o]] [[p]] [[r]] [[s]] [[t]] [[u]] [[f]] [[x]] [[`]]".split(/ +/g)
		
		return function(text, engToRus) {
			var x;
			for(x = 0; x < rus.length; x++) {
				text = text.split(engToRus ? eng[x] : rus[x]).join(engToRus ? rus[x] : eng[x]);
				text = text.split(engToRus ? eng[x].toUpperCase() : rus[x].toUpperCase()).join(engToRus ? rus[x].toUpperCase() : eng[x].toUpperCase());	
			}
			return text;
		}
	}
)();

Основной код это первые четыре строчки, дальше идёт преобразование с транслита в русский текст (если напрямую кидать русский текст в параметры выходят иероглифы).

Код AHK:


url := "ссылка на веб-приложение/exec?nick=" var "&source="var "&reason=" translit(var)
		whr := ComObjCreate("WinHttp.WinHttpRequest.5.1")
		whr.Open("GET", url, true)
		whr.Send()

Код преобразования в транслит:


translit(repstr)
{
	StringReplace, repstr, repstr, а , [[a]] , All
	StringReplace, repstr, repstr, б , [[b]] , All
	StringReplace, repstr, repstr, в , [[v]] , All
	StringReplace, repstr, repstr, г , [[g]] , All
	StringReplace, repstr, repstr, д , [[d]] , All
	StringReplace, repstr, repstr, е , [[e]] , All
	StringReplace, repstr, repstr, ё , [[yo]] , All
	StringReplace, repstr, repstr, ж , [[zh]] , All
	StringReplace, repstr, repstr, з , [[z]] , All
	StringReplace, repstr, repstr, и , [[i]] , All
	StringReplace, repstr, repstr, й , [[j]] , All
	StringReplace, repstr, repstr, к , [[k]] , All
	StringReplace, repstr, repstr, л , [[l]] , All
	StringReplace, repstr, repstr, м , [[m]] , All
	StringReplace, repstr, repstr, н , [[n]] , All
	StringReplace, repstr, repstr, о , [[o]] , All
	StringReplace, repstr, repstr, п , [[p]] , All
	StringReplace, repstr, repstr, р , [[r]] , All
	StringReplace, repstr, repstr, с , [[s]] , All
	StringReplace, repstr, repstr, т , [[t]] , All
	StringReplace, repstr, repstr, у , [[u]] , All
	StringReplace, repstr, repstr, ф , [[f]] , All
	StringReplace, repstr, repstr, х , [[x]] , All
	StringReplace, repstr, repstr, ц , [[cz]] , All
	StringReplace, repstr, repstr, ч , [[ch]] , All
	StringReplace, repstr, repstr, ш , [[sh]] , All
	StringReplace, repstr, repstr, щ , [[shh]] , All
	StringReplace, repstr, repstr, ъ , [[````]] , All
	StringReplace, repstr, repstr, ы , [[y']] , All
	StringReplace, repstr, repstr, ь , [[``]] , All
	StringReplace, repstr, repstr, э , [[e``]] , All
	StringReplace, repstr, repstr, ю , [[yu]] , All
	StringReplace, repstr, repstr, я , [[ya]] , All

	StringReplace, repstr, repstr, А , [[A]] , All
	StringReplace, repstr, repstr, Б , [[b]] , All
	StringReplace, repstr, repstr, В , [[V]] , All
	StringReplace, repstr, repstr, Г , [[G]] , All
	StringReplace, repstr, repstr, Д , [[D]] , All
	StringReplace, repstr, repstr, Е , [[E]] , All
	StringReplace, repstr, repstr, Ё , [[YO]] , All
	StringReplace, repstr, repstr, Ж , [[ZH]] , All
	StringReplace, repstr, repstr, З , [[Z]] , All
	StringReplace, repstr, repstr, И , [[i]] , All
	StringReplace, repstr, repstr, Й , [[J]] , All
	StringReplace, repstr, repstr, К , [[K]] , All
	StringReplace, repstr, repstr, Л , [[L]] , All
	StringReplace, repstr, repstr, М , [[M]] , All
	StringReplace, repstr, repstr, Н , [[N]] , All
	StringReplace, repstr, repstr, О , [[O]] , All
	StringReplace, repstr, repstr, П , [[P]] , All
	StringReplace, repstr, repstr, Р , [[R]] , All
	StringReplace, repstr, repstr, С , [[S]] , All
	StringReplace, repstr, repstr, Т , [[T]] , All
	StringReplace, repstr, repstr, У , [[u]] , All
	StringReplace, repstr, repstr, Ф , [[F]] , All
	StringReplace, repstr, repstr, Х , [[X]] , All
	StringReplace, repstr, repstr, Ц , [[CZ]] , All
	StringReplace, repstr, repstr, Ч , [[CH]] , All
	StringReplace, repstr, repstr, Ш , [[SH]] , All
	StringReplace, repstr, repstr, Щ , [[SHH]] , All
	StringReplace, repstr, repstr, Ъ , [[````]] , All
	StringReplace, repstr, repstr, Ы , [[Y']] , All
	StringReplace, repstr, repstr, Ь , [[``]] , All
	StringReplace, repstr, repstr, Э , [[E``]] , All
	StringReplace, repstr, repstr, Ю , [[YU]] , All
	StringReplace, repstr, repstr, Я , [[YA]] , All
	
	return repstr
}

Параметры (var) выведите сами уже.

15

Re: AHK: Работа с гугл-таблицами

если напрямую кидать русский текст в параметры выходят иероглифы

Через браузер тоже?

16

Re: AHK: Работа с гугл-таблицами

Через браузер нет.

17

Re: AHK: Работа с гугл-таблицами

Кодируйте передаваемые параметры (будет работать на ahk 32bit):

UriEncode(Uri)
{
    oSC := ComObjCreate("ScriptControl")
    oSC.Language := "JScript"
    Script := "var Encoded = encodeURIComponent(""" . Uri . """)"
    oSC.ExecuteStatement(Script)
    Return, oSC.Eval("Encoded")
}

18

Re: AHK: Работа с гугл-таблицами

Malcev пишет:

будет работать на ahk 32bit

Зачем, есть же универсальный вариант:

URIEncode(str, encoding := "UTF-8")
{
   PrevFormat := A_FormatInteger
   SetFormat, IntegerFast, H

   VarSetCapacity(var, StrPut(str, encoding))
   StrPut(str, &var, encoding)

   While code := NumGet(Var, A_Index - 1, "UChar")
   {
      bool := (code > 0x7F || code < 0x30 || code = 0x3D)
      UrlStr .= bool ? "%" . SubStr("0" . SubStr(code, 3), -1) : Chr(code)
   }
   SetFormat, IntegerFast, % PrevFormat
   Return UrlStr
}
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg