powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Google-таблица не реагирует на excel-ий макрос
5 сообщений из 5, страница 1 из 1
Google-таблица не реагирует на excel-ий макрос
    #39858153
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!

Есть Google-таблица. Есть excel-ий файл с макросом, который отправляет запрос в Google-таблицу и получает результат.
VBA
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Sub sendGET()
    Dim httpRequest As Object
    Dim URL As String
    
    Const webAppId As String = "aaa" 'Id веб-приложения
        
    URL = "https://script.google.com/macros/s/" & webAppId & "/exec" _
        & "?row=" & EncodeUriComponent("Текст1") _
        & "&row=" & EncodeUriComponent("Текст1") _
        & "&row=" & EncodeUriComponent("Текст1")    
    
    Debug.Print URL

    'Set httpRequest = CreateObject("MSXML2.XMLHTTP")
    Set httpRequest = CreateObject("MSXML2.ServerXMLHTTP.6.0")    
        
    httpRequest.Open "GET", URL, False, "xxx", "yyy"    
    httpRequest.send   
End Sub

Google Apps Script
Код: javascript
1.
2.
3.
4.
5.
6.
7.
function doGet(e){  
  console.log("doGet среагировал");
}

function doPost(e){
  console.log("doPost среагировал");  
}


Если запустить макрос, то Google-таблица не реагирует. В "G Suite Developer" - "Мои выполнения" не появляется строка, что запустилась. А в окне "Watches" объект httpRequestка отображает такие значения:
- readyState = 4
- status = 200
- statusText = "ОК"

Если ввести полученную строку (от Debug.Print URL ) в адресной строке браузера, то пишет что "Скрипт был выполнен, но ничего не возвратил." То есть Google-таблица реагирует. В "G Suite Developer" - "Мои выполнения" появляется строка, что запустилась.

Почему Google-таблица не реагирует на excel-ий макрос? Как правильно написать?
...
Рейтинг: 0 / 0
Google-таблица не реагирует на excel-ий макрос
    #39858326
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В браузере нормально заходишь на Google-страницу, а также можно вводить в адресной строке тот URL, который выдает Debug.Print , и Google-таблица реагирует. Может быть такое, что Google забанил именно подключение от стороннего приложения как Excel с VBA?
...
Рейтинг: 0 / 0
Google-таблица не реагирует на excel-ий макрос
    #39858968
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если так написать в макросе
Код: vbnet
1.
2.
Set httpRequest = CreateObject("MSXML2.XMLHTTP")
'Set httpRequest = CreateObject("MSXML2.ServerXMLHTTP.6.0")   

То в окне "Watches" объект httpRequestка отображает такие значения:
- readyState = 4
- status = 0
- statusText = ""
...
Рейтинг: 0 / 0
Google-таблица не реагирует на excel-ий макрос
    #39860013
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikk, я не знаток хттп. Скоко-то лет назад сделал простую страницу с яваскриптом, получающую значение с сервака через XMLHttpRequest.
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
function procGeTtotal() {
    syba= 0;
    // Шлём GET-запрос 
    cnt= Math.random();
    requedata(cnt);
}//end sub
//----------------------------

function requedata(par1) {
	loadXMLDoc('/'+reqall + par1);
}//endsub
//----------------------------

function loadXMLDoc(url) {
try{    
    if (window.XMLHttpRequest) {
        reque = new XMLHttpRequest();
        reque.onreadystatechange = procRequeStateChange;
        reque.open("GET", url, true);
        reque.send(null);

    } else if (window.ActiveXObject) {	// для IE 5.0
        reque= new ActiveXObject("Microsoft.XMLHTTP");
   ......................................
} catch(DOMException) {
}//endtry
}//endsub
//----------------------------

function procRequeStateChange() {
    // Получаем ответ
try{
    pFrm1.state.value = stat(reque.readyState); 
} catch(TypeError) {
} finally {
    if (reque.readyState == 4) {
        // only if "OK"
        if (reque.status == 200) {
            var ss= reque.responseText;
	    pFrm1.Respon.value= procParsXML(ss);
        } else {
            pFrm1.Respon.value= '---';
	    alert("Запрошенные данные не получены:\n" +reque.readyState + reque.status + reque.statusText.Length, 3000);
        }//endif

    }//endif
}//endtry
}//endsub
//----------------------------


У меня отличия от твоего выделил жирным.
reque.onreadystatechange = procRequeStateChange;
reque.open("GET", url, true );

Суть была в чём?
1) Что статус якобы последовательно может проходить значения, прежде чем примет статус=4 (ОК). Поэтому сначала надо было его дождаться, а потом только получить
reque.open("GET", url, true);
2) в строке open() стоит true. В твоём случае false. Совсем не помню что это.
...
Рейтинг: 0 / 0
Google-таблица не реагирует на excel-ий макрос
    #39861618
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98,

Это синхронный или асинхронный запрос. В данном случае синхронный
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Google-таблица не реагирует на excel-ий макрос
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]