#.net #webclient #google-drive-api #webrequest
#.net #webclient #google-drive-api #webrequest
Вопрос:
Я ищу способ программного получения информации (время последнего изменения), а затем экспортировать и загрузить файл Google Sheets в формат cvs.
Я уже нашел способ сделать это из браузера:
https://spreadsheets.google.com/feeds/download/spreadsheets/Export?
key={GOOGLE_SPREADSHEET_KEY}amp;hlamp;exportFormat=csvamp;gid={REQUESTED_SHEET_NUMBER}
Где GOOGLE_SPREADSHEET_KEY и REQUESTED_SHEET_NUMBER могут быть прочитаны из строки браузера во время стандартной навигации.
но, очевидно, мой браузер аутентифицируется с помощью файла cookie, и я не уверен, как воспроизвести эту ситуацию в консольном приложении.
Причина, по которой я хотел бы избежать использования Google Drive SDK или Google Spreadsheet SDK, заключается в отсутствии исходного кода, и поэтому я не смог бы перенести приложение с помощью Mono.
Обновление: мне удалось получить доступ к своему файлу, установив общий доступ к общедоступному просмотру с диска, это отлично подходит для моих целей, и я хотел бы поделиться им, даже если это не полное решение, если вы хотите сохранить доступ к просмотру файлов в частном порядке.
static void Main(string[] args)
{
var file_id = GOOGLE_SPREADSHEET_KEY;
var sheet_number=REQUESTED_SHEET_NUMBER;
var export_format="csv";
string unf_url="https://spreadsheets.google.com/feeds/download/spreadsheets/Export?key={0}amp;hlamp;gid={1}amp;exportFormat={2}";
string url = string.Format(unf_url, file_id, sheet_number, export_format);
var request=WebRequest.Create(url);
var result=request.BeginGetResponse(handleResponse,request);
Console.ReadKey();
}
private static void handleResponse(IAsyncResult arg)
{
var request = (arg.AsyncState as WebRequest);
var stream = request.EndGetResponse(arg).GetResponseStream();
using (System.IO.StreamReader reader = new System.IO.StreamReader(stream))
{
System.Diagnostics.Debug.Write(reader.ReadToEnd());
}
}
Обновление 2: похоже, это работает только с недавно обновленным форматом листа GSheets (автономные листы). Поэтому, если вы видите «ccc» в URL-адресе, вам нужно скопировать содержимое в совершенно новый файл.
Комментарии:
1. Что вы подразумеваете под отсутствием или исходным кодом? Drive api работает из любого места, где вы можете выполнить запрос https.
2. Я неправильно указал Google Drive Api для Google Drive Sdk, сейчас исправляю
3. в данном случае это не так. это API электронных таблиц Google, но в API drive, вероятно, есть способ экспортировать напрямую, вместо того, чтобы читать фид ячейки
4. Да, вся процедура потока сервера OAuth2 является излишней для рассматриваемой проблемы. Похоже, что передача файла в общедоступный доступ и использование строки get, которую я нашел раньше, работает достаточно хорошо.
5. Да, я собирался предложить это