Лучший отвечающий
Powershell и Google Drive API (Добавить запись в эл. таблицу на гугл диске)

Вопрос
-
Есть заранее созданный файл на гугл диске - электронная таблица.
Необходимо в неё добавить строку с данными (которые сгенерирует powershell скрипт).
С гугл драйвом взаимодействие идёт через его API для платформы .NET
Есть официальный пример на .NET: https://developers.google.com/google-apps/spreadsheets/#adding_a_list_row
Но необходимо сделать тоже самое на Powershell.
Если есть знатоки интеграции Powershell и .NET, прощу помощи по данному вопросу.
Для примера, есть рабочий код на powershell по получению списка электронных таблиц с гугл диска:
15 июля 2013 г. 12:29
Ответы
-
PS > $feed.Entries | ft row,column,value -auto Row Column Value --- ------ ----- 1 1 Имя 1 2 Возраст 2 1 Паша 2 2 20 3 1 Маша 3 2 18
Добавим запись:
$service = New-Object Google.GData.Spreadsheets.SpreadsheetsService("exampleRuRus-exampleApp-2") $service.setUserCredentials($username, $password) $query = New-Object Google.GData.Spreadsheets.CellQuery($keyid, "od6", "private", "full") $feed = $service.Query($query) $lastrow= ($feed.Entries | Measure-Object Row -Maximum).Maximum + 1 $cellEntry = New-Object Google.GData.Spreadsheets.CellEntry($lastrow, 1, "Игорь") $feed.Insert($cellEntry) $cellEntry = New-Object Google.GData.Spreadsheets.CellEntry($lastrow, 2, "25") $feed.Insert($cellEntry)
Вывод:
- Помечено в качестве ответа MoxFulder 16 июля 2013 г. 5:40
15 июля 2013 г. 17:13Отвечающий
Все ответы
-
PS > $feed.Entries | ft row,column,value -auto Row Column Value --- ------ ----- 1 1 Имя 1 2 Возраст 2 1 Паша 2 2 20 3 1 Маша 3 2 18
Добавим запись:
$service = New-Object Google.GData.Spreadsheets.SpreadsheetsService("exampleRuRus-exampleApp-2") $service.setUserCredentials($username, $password) $query = New-Object Google.GData.Spreadsheets.CellQuery($keyid, "od6", "private", "full") $feed = $service.Query($query) $lastrow= ($feed.Entries | Measure-Object Row -Maximum).Maximum + 1 $cellEntry = New-Object Google.GData.Spreadsheets.CellEntry($lastrow, 1, "Игорь") $feed.Insert($cellEntry) $cellEntry = New-Object Google.GData.Spreadsheets.CellEntry($lastrow, 2, "25") $feed.Insert($cellEntry)
Вывод:
- Помечено в качестве ответа MoxFulder 16 июля 2013 г. 5:40
15 июля 2013 г. 17:13Отвечающий -
Спасибо! Всё работает =)
Если кому-то ещё понадобится данная вещь:
$keyid= ID файла эл. таблицы (берём из ссылки на файл на гугл диске, выделено жирным) https://docs.google.com/a/somedomen.ru/spreadsheet/ccc?key=0AgJ6NH53ZTb93Bd9eVWhvb1E5VGlJLUc3RlZJQ2c#gid=0
$username= логин аккаунта гугла
$password= пароль от аккаунта
И соответственно скачиваем\устанавливаем Google Data API: https://code.google.com/p/google-gdata/downloads/list
+ в скрипте прописываем путь к API:
Add-Type -Path "C:\Program Files (x86)\Google\Google Data API SDK\Redist\Google.GData.Spreadsheets.dll"
16 июля 2013 г. 5:55 -
Есть ещё возможность: добавлять данные сразу построчно. Всё как и выше, только используем следующий фрагмент кода:
$service = New-Object Google.GData.Spreadsheets.SpreadsheetsService("exampleRuRus-exampleApp-2") $service.setUserCredentials($username, $password) $Listquery = New-Object Google.GData.Spreadsheets.ListQuery($keyid, "od6", "private", "full") $listfeed = $service.Query($Listquery) $listEntry = New-Object Google.GData.Spreadsheets.ListEntry $listEntry.Elements.Add((New-Object Google.GData.Spreadsheets.ListEntry+Custom -Property @{ LocalName = "имяотчество"; Value = "Сергей Иванович" })) $listEntry.Elements.Add((New-Object Google.GData.Spreadsheets.ListEntry+Custom -Property @{ LocalName = "фамилия"; Value = "Иванов" })) $listfeed.Insert($listEntry)
Соответственно:
LocalName = "имяотчество"
Это название столбца - обычно соответствует данным в первой строке. НО! Если в ячейке таблицы A1 будет название "Имя отчество", название столбца для запросов будет скорее всего: "имяотчество" - ни каких заглавных букв и пробелов.
Точно узнать названия столбцов можно , например, таким запросом:
$listfeed.Entries[0].Elements.LocalName
- Изменено MoxFulder 23 сентября 2013 г. 7:42
23 сентября 2013 г. 7:41