Perl:使用Net :: Google :: Spreadsheets在libxml

时间:2015-07-20 23:21:41

标签: perl google-api google-sheets google-spreadsheet-api

我正在尝试使用Perl google电子表格API,我遇到了这个错误。我按照http://search.cpan.org/~danjou/Net-Google-Spreadsheets-0.1501/lib/Net/Google/Spreadsheets.pm

的文档完成了

这是代码

use Net::Google::Spreadsheets;
use Net::Google::DataAPI::Auth::OAuth2;
use Net::OAuth2::AccessToken;

my $oauth2;
my $service;

$oauth2 = Net::Google::DataAPI::Auth::OAuth2->new(
  client_id => '<clientid>',
  client_secret => '<client secret>',
  scope => ['http://spreadsheets.google.com/feeds/'],
);

my $url = $oauth2->authorize_url(
     access_type => 'offline',
     approval_prompt => 'force',
);

print "$url\nEnter the code: ";
my $code = <STDIN>;
my $access_token = $oauth2->get_access_token($code) or die;

$service = Net::Google::Spreadsheets->new(auth => $oauth2);

print "Testing Spreadsheet";
# find a spreadsheet by key
my $spreadsheet = $service->spreadsheet( { key => '<spread sheet key>' }) or die $!;

在Oauth期间不会抛出错误,但是当我尝试访问电子表格API时,它会给我以下错误。

  

在字符串eq中使用未初始化的值$ nsURI   /usr/local/lib/perl5/site_perl/5.14.2/mach/XML/LibXML.pm第1705行。   在/usr/local/lib/perl5/site_perl/5.14.2/mach/XML/LibXML.pm第1699行。           XML ::的libxml ::元:: getElementsByTagNameNS(XML ::的libxml ::元= SCALAR(0x80416ed20),   undef,&#34; entry&#34;)调用   /usr/local/lib/perl5/site_perl/5.14.2/XML/Atom/Feed.pm第84行           XML ::原子::饲料:: entries_libxml(XML ::原子::进给量= HASH(0x8041938e8))   调用/usr/local/lib/perl5/site_perl/5.14.2/Net/Google/DataAPI.pm   第113行           网::谷歌电子表格:: ::电子表格(净::谷歌电子表格:: = HASH(0x803045600)   HASH(0x802a5cb70))调用了   /usr/local/lib/perl5/site_perl/5.14.2/Net/Google/Spreadsheets.pm line   57           Net :: Google :: Spreadsheets :: ANON (CODE(0x803020438),Net :: Google :: Spreadsheets = HASH(0x803045600),HASH(0x802a5cb70))   at /usr/local/lib/perl5/site_perl/5.14.2/mach/Mouse/Meta/Class.pm line   381           鼠标::元::类::的 ANON (净::谷歌::电子表格= HASH(0x803045600),   HASH(0x802a5cb70))调用了   /usr/local/lib/perl5/site_perl/5.14.2/mach/Mouse/Meta/Class.pm line   334           网::谷歌电子表格:: ::电子表格(净::谷歌电子表格:: = HASH(0x803045600)   HASH(0x802a5cb70))调用了   /usr/local/lib/perl5/site_perl/5.14.2/Net/Google/DataAPI.pm第132行           网::谷歌电子表格:: ::电子表格(净::谷歌电子表格:: = HASH(0x803045600)   HASH(0x802a5cb70))在try.pl第62行调用

1 个答案:

答案 0 :(得分:0)

对于任何有同样问题的人来说,这就是解决方案。

看起来在编写此模块的时间和今天google已更改其API之间,因此需要修改模块的文档。

通过更改密钥=&gt; &#39;关键&#39;到id =&gt; &#39;关键&#39;解决了这个问题。

因此,获取电子表格的正确方法是

my $spreadsheet = $service->spreadsheet( { id => '<spread sheet key>' }) or die 
$!;

密钥是网址的一部分 https://docs.google.com/spreadsheets/d/[spreadsheetkey]/edit