Извлечение данных электронной таблицы Google Docs с использованием PHP - PullRequest
0 голосов
/ 15 августа 2011

Я пытаюсь получить данные из электронной таблицы Google, и я думаю, что это должно работать (также видел подобный код в другом подобном вопросе здесь), но я получаю ответ:

Moved Temporarily The document has moved here. сссылка на here:

https://www.google.com/a/4playtheband.co.uk/ServiceLogin?service=wise&continue=https://docs.google.com/a/4playtheband.co.uk/spreadsheet/pub?hl%3Den_US%26hl%3Den_US%26key%3D0AuJb1YSvmVn5dGdvUzU2QUJHUGdaTEZNbVI4dVJ6eHc%26single%3Dtrue%26gid%3D0%26output%3Dcsv%26ndplr%3D1&followup=https://docs.google.com/a/4playtheband.co.uk/spreadsheet/pub?hl%3Den_US%26hl%3Den_US%26key%3D0AuJb1YSvmVn5dGdvUzU2QUJHUGdaTEZNbVI4dVJ6eHc%26single%3Dtrue%26gid%3D0%26output%3Dcsv%26ndplr%3D1&hl=en_US&passive=true&go=true

Я не знаю, связана ли проблема с этими документами, используемыми в Службах Google, но я настроил электронную таблицучтобы быть публичным, и я скопировал ссылку, предоставленную им, когда я пошел на Share и экспортировал ее как CSV.

Вот код:

<?php

$url='https://docs.google.com/a/4playtheband.co.uk/spreadsheet/pub?hl=en_US&hl=en_US&key=0AuJb1YSvmVn5dGdvUzU2QUJHUGdaTEZNbVI4dVJ6eHc&single=true&gid=0&output=csv';

if (($handle = fopen($url, "r")) !== FALSE)
{
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE)
    {
        $totalrows = count($data);
        for ($row=0; $row<=$totalrows; $row++)
        {
            echo $data[$row];
        }
    }
    fclose($handle);
}
?>

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

Спасибо.

ОБНОВЛЕНИЕ Код, кажется, прекрасно работает, когда электронная таблица создается в моем личном аккаунте Google, а не в аккаунте, который я использую для Служб Google.

Ответы [ 3 ]

1 голос
/ 15 августа 2011

Я думаю, что это потому, что URL перенаправляет с помощью 302 и fopen не может следовать HTTP перенаправлениям. Я думаю, что использование скручивания привязок решит эту проблему.

Также рассмотрите возможность использования библиотеки Zend GData в качестве API высокого уровня для Документов Google. http://framework.zend.com/manual/en/zend.gdata.spreadsheets.html

1 голос
/ 15 августа 2011

Вы получаете код состояния HTTP 302. Это означает, что вы должны перейти по ссылке на новый URL.

0 голосов
/ 23 августа 2011

Мне удалось это исправить, сначала используя электронную таблицу в моем собственном аккаунте Google, а не приложениями Google, а затем с помощью следующего кода:

<div id="faqSection">
<!-- The FAQs are inserted here -->
<p>

<?php
// link to Google Docs spreadsheet
$url='google docs spreadsheet url';

// open file for reading
if (($handle = fopen($url, "r")) !== FALSE)
{
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE)
    {
        $totalrows = count($data);
        for ($row=0; $row<=$totalrows; $row++)
        {
            // only print out even rows, i.e. the questions
            // the second if is to avoid blank divs from being printed out
            // which was a bug I was experiencing
            if (($row % 2 == 0) && (strlen($data[$row])>0))
            {
                $answer = $row + 1;
                echo '<dt><span class="icon"></span>'.$data[$row].'</dt><dd>'.$data[$answer].'</dd>';
            }
        }
    }
    fclose($handle);
}
?>
</p>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...