используя запрос http для обновления электронной таблицы Google - PullRequest
0 голосов
/ 20 ноября 2018

Попытка настроить электронную таблицу для получения данных через сообщение http. Чтобы проверить это, я настроил простой скрипт на python, чтобы просто отправить запрос http. Я не хочу использовать определенный API Google на Python или где-то еще, потому что я хочу, чтобы некоторые другие люди могли просто отправить запрос, как они хотели бы. Итак, в моем скрипте Google у меня просто есть:

function doPost(e){
   sheet = SpreadsheetApp.getActiveSheet();
   range = sheet.getRange(1, 1)
   ange.setValue(e.text)
}

В питоне у меня просто есть:

import requests

if __name__== "__main__":
    params = {'Authorization': "Bearer [token]",
              'contentType': 'application/json',
              'text': "is working?"}
    r = requests.post("https://script.google.com/macros/s/[uniquekey]/exec", params)
    print(r.status_code, r.reason)

Все, что я получаю, это

"401 Несанкционированный"

Я также пытался отправить это через python, а также запустить JS на веб-сервере и через chrome (что, как я догадался, вызвало проблемы с безопасностью). все дали мне тот же ответ. Я уверен, что просто не авторизую должным образом, но я не смог найти правильный способ сделать это. заранее спасибо. Я уверен, что есть и другие проблемы, но я не могу даже получить доступ.

1 Ответ

0 голосов
/ 20 ноября 2018

Как насчет этой модификации?

Модифицированный скрипт:

В этом модифицированном скрипте предполагается следующее:

  • Веб-приложения развернуты как
    • Запустите приложение как равно Me
    • У кого есть доступ к приложению равно Only myself или Anyone
  • Ваш токен доступа может использоваться для доступа к вашим веб-приложениям.Если ваш токен доступа не может быть использован для него, попробуйте настроить веб-приложения следующим образом.- Запустите приложение как - Me - У кого есть доступ к приложению - Anyone, even anonymous - В этом параметре вы можете получить доступ к веб-приложениям без маркера доступа.

Python:

import requests

if __name__== "__main__":
    params = {
        'text': "is working?",
    }
    headers = {
        'Authorization': "Bearer [token]",
    }
    r = requests.post("https://script.google.com/macros/s/[uniquekey]/exec", data=params, headers=headers)
    print(r.status_code, r.reason)
Примечание:
  • Пожалуйста, поместите токен доступа в заголовок.

Сценарий Google Apps:

Когда вы изменили свой сценарий, , пожалуйста, повторно разверните его как новую версию. Таким образом, последний сценарий будет отражен в веб-приложениях.

function doPost(e) {
  const sheet = SpreadsheetApp.getActiveSheet();
  const range = sheet.getRange(1, 1);
  range.setValue(e.parameter.text);
  return ContentService.createTextOutput("Done.");
}
Примечание:
  • При возврате ContentService.createTextOutput(), Веб-приложения возвращают код состояния 200.
  • Вы можете получить значение 'text': "is working?" как e.parameter.text.
  • При использовании SpreadsheetApp.getActiveSheet() значение e.parameter.textпомещается на 1-ю страницу таблицы.

Ссылки:

В моем окружении я мог подтвердить, что эта модификация работает.Но если в вашей среде эти измененные сценарии не работают, извините.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...