我正在尝试使用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行调用
答案 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