Я использую клиент PHP Google для листов:
https://github.com/asimlqt/php-google-spreadsheet-client
Этот клиент реализует v3 API:
https://developers.google.com/google-apps/spreadsheets/data
Я обычно получаю строки, как это:
// simplified code:
$worksheet = $worksheetFeed->getByTitle($worksheet_id);
$listFeed = $worksheet->getListFeed();foreach ($listFeed->getEntries() as $entry)
{
$rows []= $entry->getValues();
}
Google превращает «Admin Title» в ключ массива «admintitle». Я хотел бы получить карту ключей массива Google с оригинальными названиями. Например, я хочу массив с записями вроде:
[admintitle] => «Название администратора»
и т.п.
Как я могу это сделать?
Я не думаю, что в API есть что-то для этого, поэтому я сделал свою собственную функцию. Обратите внимание, что мы используем API-клиент v2.3
function get_worksheet_column_titles($worksheet)
{
$map = array();
$already_in_map = array();
$row_one_query = array(
'min-row' => 1,
'max-row' => 1
);
$cellfeed = $worksheet->getCellFeed($row_one_query);
$entries = $cellfeed->getEntries();
foreach ($entries as $cell)
{
$title = trim($cell->getContent());if ($title && $title[0] != '_')
{
$array_key = strtolower(preg_replace('/[^A-Z0-9_-]/i', '', $title));
if ($already_in_map[$array_key])
{
// if identical column titles, google adds count to end
$seq = 2;
while ($already_in_map[$array_key.'_'.$seq])
{
$seq++;
}$array_key .= "_{$seq}";
}
// mark this key as used as used.
$already_in_map[$array_key] = true;
$map[$array_key] = $title;
}
else
{
continue;
}
}
return $map;
}
Других решений пока нет …