1

我的难题如下。我有很多数据存储在 Google Docs 上的各种电子表格中。将所有数据编译到一个电子表格中(用于分析目的)达到了大小限制。既然已经出来了,我需要另一种方法。

我编写了一个 Apps 脚本来获取数据并将其全部导出到一系列相应的 .csv 文件中。我现在需要从存储在 Google Docs 中的 30 个 .csv 文件中获取数据并将其导入 MySQL 服务器。这是最有效的方法吗?

现在,我需要一种将所有 .csv 文件从我的 Google 文档列表导入服务器的方法,我的 PHP 脚本可以将它们导入数据库。你能为我指出正确的方向吗?

我在研究过程中发现了以下帖子,看起来非常接近,但不幸的是,在将其适应我的目的时,它超出了我的想象......

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

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</pre>";

非常感谢!任何帮助将不胜感激!:)

4

2 回答 2

0

在我看来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
}
于 2012-05-24T10:43:40.187 回答
0

我将使用从计划任务启动的批处理文件下载 .csv 文件(即每天一次),然后在批处理文件中启动 SQL c:\sql\update_timekeeping.sql 存储在 update_timekeeping 中的 SQl 命令。 sql 文本文件。还提供运行计时更新的历史记录......

于 2011-07-20T17:45:26.070 回答