【问题标题】:Perl: Using Net::Google::Spreadsheets gives error in libxmlPerl:使用 Net::Google::Spreadsheets 在 libxml 中产生错误
【发布时间】:2015-10-10 05:59:14
【问题描述】:

我正在尝试使用 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::Element::getElementsByTagNameNS(XML::LibXML::Element=SCALAR(0x80416ed20), undef, "entry") 调用于 /usr/local/lib/perl5/site_perl/5.14.2/XML/Atom/Feed.pm 第 84 行 XML::Atom::Feed::entries_libxml(XML::Atom::Feed=HASH(0x8041938e8)) 在 /usr/local/lib/perl5/site_perl/5.14.2/Net/Google/DataAPI.pm 调用 第 113 行 Net::Google::Spreadsheets::spreadsheets(Net::Google::Spreadsheets=HASH(0x803045600), HASH(0x802a5cb70)) 调用于 /usr/local/lib/perl5/site_perl/5.14.2/Net/Google/Spreadsheets.pm 行 57 Net::Google::Spreadsheets::ANON(CODE(0x803020438), Net::Google::Spreadsheets=HASH(0x803045600), HASH(0x802a5cb70)) 调用 在 /usr/local/lib/perl5/site_perl/5.14.2/mach/Mouse/Meta/Class.pm 行 381 Mouse::Meta::Class::ANON(Net::Google::Spreadsheets=HASH(0x803045600), HASH(0x802a5cb70)) 调用于 /usr/local/lib/perl5/site_perl/5.14.2/mach/Mouse/Meta/Class.pm 行 334 Net::Google::Spreadsheets::spreadsheets(Net::Google::Spreadsheets=HASH(0x803045600), HASH(0x802a5cb70)) 调用于 /usr/local/lib/perl5/site_perl/5.14.2/Net/Google/DataAPI.pm 第 132 行 Net::Google::Spreadsheets::spreadsheet(Net::Google::Spreadsheets=HASH(0x803045600), HASH(0x802a5cb70)) 在 try.pl 第 62 行调用

【问题讨论】:

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


    【解决方案1】:

    对于遇到相同问题的人来说,这里是解决方案。

    看起来好像是从编写这个模块到今天 google 更改了他们的 API,因此需要修改模块的文档。

    通过将 key => 'the key' 更改为 id => 'the key' 解决了问题。

    所以获取电子表格的正确方法是

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

    key 是 url 的一部分 https://docs.google.com/spreadsheets/d/[spreadsheetkey]/edit

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多