Загрузите серию Документов Google (файлы .csv) на мой сайт с помощью PHP - PullRequest
1 голос
/ 20 июля 2011

Моя загадка такова. У меня есть много данных, хранящихся в различных таблицах в Документах Google. Компилирование всех данных в одну электронную таблицу (для целей анализа) достигло предела размера. Видя, что это вышло, мне нужен был другой метод.

Я написал скрипт для приложений, чтобы взять данные и экспортировать их в серию соответствующих CSV-файлов. Теперь мне нужно получить данные из этих 30 CSV-файлов, хранящихся в Google Docs, и импортировать их на сервер MySQL. Это самый эффективный метод?

Сейчас мне нужен способ импортировать все файлы .csv из моего списка документов Google на сервер, где мой скрипт PHP может импортировать их в базу данных. Можете ли вы указать мне правильное направление?

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

http://gdatatips.blogspot.com/2009/07/download-google-doc-using-php-library.html

<code>function download($client, $url, $format=null) {
  $sessionToken = $client->getHttpClient()->getAuthSubToken();
  $opts = array(
    'http' => array(
      'method' => 'GET',
      'header' => "GData-Version: 3.0\r\n".
                  "Authorization: AuthSub token=\"$sessionToken\"\r\n"
    )
  );
  if ($url != null) {
    $url =  $url . "&exportFormat=$format";
  }
  return file_get_contents($url, false, stream_context_create($opts));
}

// TODO 1: setup a Zend_Gdata_Docs client in $docs_client
// TODO 2: fetch a $feed or $entry
$contentLink = $feed->entries[0]->content->getSrc();
$fileContents = download($docs_client, $contentLink, 'txt');
echo 'Contents of document "' . $feed->entries[0]->title . '":<hr>';
echo "<pre>$fileContents
";

Большое спасибо! Будем очень благодарны любой помощи! :)

Ответы [ 2 ]

0 голосов
/ 24 мая 2012

Мне кажется, что file_get_contents() должно быть похоже на PHP-версию этого скрипта

function file_get_contents(){
  //This function generates a pdf of your current spreadsheet and emails it to yourself as attachment
  //Make sure your spreadsheet is not too big. The pdf size tends to be 200kb/page and if too large
  //if the pdf is too large the urlFetch might timeout

  var AUTH_TOKEN = "xxxxxxxxxxxxxx"; //Enter your AUTH_TOKEN
  //You can receive it from https://appscripts.appspot.com/getAuthToken

  var ssID=SpreadsheetApp.getActiveSpreadsheet().getId()+"&gid="+SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getSheetId();
  var url = "https://spreadsheets.google.com/feeds/download/spreadsheets/Export?key="
      + ssID + "&exportFormat=csv"; 
  //Add &gid=x at the end of above url if you only want a particular sheet
  //gid of a sheet can be obtained by the undocumented function getSheetId()
  //ex: SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getSheetId();
  //exportFormat=xls did not work when I tried. I dont know why

  var auth = "AuthSub token=\"" + AUTH_TOKEN + "\"";

  var res = UrlFetchApp.fetch(url, {headers: {Authorization: auth}});
  var content=res.getContentText();
  return content
}
0 голосов
/ 20 июля 2011

Я бы скачал файлы .csv, используя пакетный файл, который запускается из запланированных задач - (т.е. один раз в день) - затем в пакетном файле запускается SQL c: \ sql \ update_timekeeping.sql Команды SQl хранятся в текстовом файле update_timekeeping.sql. Также предоставляет историю запуска обновления хронометража ....

...