Я считаю, что ваша цель заключается в следующем.
- Вы хотите поместить значения в общедоступную электронную таблицу Google, используя python.
- В этом случае вы хотите получить доступ к в электронную таблицу без авторизации.
Для этого, как насчет этого ответа?
Проблема и обходной путь:
Чтобы поместить значения в общедоступный Google Электронная таблица, используется метод POST. В этом случае необходимо использовать токен доступа. С другой стороны, в случае метода GET, когда используется API Sheets, можно использовать ключ API. И конечные точки, такие как exportLinks
, вы можете получить значения без ключа API. Это спецификация стороны Google.
В этих условиях, для достижения вашей цели, я хотел бы предложить следующие 2 шаблона.
Шаблон 1:
В этом шаблоне я хотел бы предложить доступ к электронной таблице с использованием токена доступа, полученного из учетной записи службы. В этом случае сценарий может быть проще.
Пример сценария:
import gspread
from oauth2client.service_account import ServiceAccountCredentials
spreadsheetId = "###" # Please set the Spreadsheet ID.
scope = ['https://www.googleapis.com/auth/spreadsheets']
credentials = ServiceAccountCredentials.from_json_keyfile_name('credentials.json', scope)
client = gspread.authorize(credentials)
spreadsheet = client.open_by_key(spreadsheetId)
worksheet = spreadsheet.sheet1
worksheet.update_acell('A1', 'sample')
- В этом примере сценария
sample
помещается в ячейку "A1" первого вкладка в общедоступной электронной таблице с использованием gspread.
Pattern 2:
В этом шаблоне я хотел бы предложить доступ к электронной таблице с помощью веб-приложений, созданных скриптом Google Apps в качестве оболочки API. В этом случае сценарий python становится проще.
Использование:
Пожалуйста, выполните следующую последовательность действий.
1. Создайте новый проект скрипта Google Apps.
Пример скрипта веб-приложений - это скрипт Google Apps. Поэтому, пожалуйста, создайте проект Google Apps Script.
Если вы хотите создать его напрямую, перейдите к https://script.new/. В этом случае, если вы не вошли в Google, откроется экран входа. Пожалуйста, войдите в Google. При этом открывается редактор сценариев Google Apps Script.
2. Подготовьте скрипт.
Скопируйте и вставьте следующий скрипт (Google Apps Script) в редактор скриптов. И , пожалуйста, включите Google Sheets API в Advanced Google services . Этот сценарий предназначен для веб-приложений.
function doPost(e) {
try {
const spreadsheetId = e.parameter.spreadsheetId;
const obj = JSON.parse(e.postData.contents);
const resource = obj.body;
const range = obj.arguments.range;
const valueInputOption = obj.arguments.valueInputOption;
Sheets.Spreadsheets.Values.update(resource, spreadsheetId, range, {valueInputOption: valueInputOption});
return ContentService.createTextOutput("ok");
} catch(e) {
return ContentService.createTextOutput(JSON.stringify(e));
}
}
- В этом случае используется метод POST.
- В этом примере сценария, в качестве сценария тестирования, ставятся значения в электронную таблицу с использованием метода spreadsheets.values.update в API листов.
3. Развертывание веб-приложений.
- В редакторе сценариев откройте диалоговое окно с помощью «Publi sh» -> «Развернуть как веб-приложение».
- Выберите «Me " for " Запустите приложение как: ".
- При этом сценарий запускается от имени владельца.
- Выберите "Любой, даже анонимный" для "У кого есть доступ к приложению: ".
- В этом случае токен доступа не требуется запрашивать. Я думаю, что я рекомендую этот параметр для вашей цели.
- Конечно, вы также можете использовать токен доступа. В это время установите «Anyone» .
- Нажмите кнопку «Развернуть» как новую «Project version».
- Автоматически открывать диалоговое окно «Требуется авторизация».
- Нажмите «Просмотреть разрешения».
- Выберите собственную учетную запись.
- Нажмите «Дополнительно» в разделе «Это приложение не подтверждено».
- Нажмите " Go to ### имя проекта ### (небезопасно) "
- Нажмите кнопку" Разрешить ".
- Нажмите" ОК ".
- Скопируйте URL-адрес веб-приложений. Это как
https://script.google.com/macros/s/###/exec
. - Когда вы изменили скрипт Google Apps, пожалуйста, повторно разверните его как новую версию. Этим измененный сценарий отражается в веб-приложениях. Пожалуйста, будьте осторожны.
4. Запустите функцию с помощью веб-приложений.
Это пример сценария python для запроса веб-приложений. Установите URL-адрес веб-приложения, идентификатор электронной таблицы и диапазон.
import json
import requests
spreadsheet_id = '###' # Please set the Spreadsheet ID.
body = {
"arguments": {"range": "Sheet1!A1", "valueInputOption": "USER_ENTERED"},
"body": {"values": [["sample"]]}
}
url = 'https://script.google.com/macros/s/###/exec?spreadsheetId=' + spreadsheet_id
res = requests.post(url, json.dumps(body), headers={'Content-Type': 'application/json'})
print(res.text)
- В этом примере сценария
sample
помещается в ячейку "A1" на 1-й вкладке в общедоступной электронной таблице. - В этом случае авторизация в сценарии python не требуется, поскольку она уже была выполнена при развертывании веб-приложений.
Примечание:
- При изменении сценария веб-приложений повторно разверните веб-приложения как новую версию. Таким образом, последний скрипт отражается в веб-приложениях. Пожалуйста, будьте осторожны.
Ссылки: