为了账号安全,请及时绑定邮箱和手机立即绑定

使用 API 在 Google 工作表中写入的问题

使用 API 在 Google 工作表中写入的问题

PHP
小怪兽爱吃肉 2022-05-27 10:32:29
我正在尝试使用 google sheet API 来编写 google sheet API。为此,我使用下面的代码$spreadsheetId = 'XXXX';$range = "Zoho Emails 2";$values = [["This","is","a","new","row"],];$body = new Google_Service_Sheets_ValueRange([   "values" =>$values]);$params = [   `valueInputOptions` => "RAW"];$insert = [   "insertDataOption" => "INSERT_ROWS"];$result = $service->spreadsheets_values->append(  $spreadsheetId,  $range,  $body,  $params,  $insert);但是当我运行这段代码时,这段代码给了我以下错误[26-Nov-2019 22:45:36 America/Chicago] PHP Fatal error:  Uncaught exception 'Google_Exception' with message '(append) unknown parameter: ''' in /Google_sheet/vendor/google/apiclient/src/Google/Service/Resource.php:147Stack trace:#0 /Google_sheet/vendor/google/apiclient- services/src/Google/Service/Sheets/Resource/SpreadsheetsValues.php(65): Google_Service_Resource->call('append', Array, 'Google_Service_...')#1 /Google_sheet/quickstart.php(99): Google_Service_Sheets_Resource_SpreadsheetsValues- >append('1k8sR-aV8O5W7jP...', 'Zoho Emails 2', Object(Google_Service_Sheets_ValueRange), Array, Array)#2 {main}thrown in /Google_sheet/vendor/google/apiclient/src/Google/Service/Resource.php on line 147但我不明白为什么会发生这个错误。有人可以帮我吗?
查看完整描述

1 回答

?
当年话下

TA贡献1890条经验 获得超9个赞

这个改装怎么样?


从:

$params = [

   `valueInputOptions` => "RAW"

];

$insert = [

   "insertDataOption" => "INSERT_ROWS"

];

$result = $service->spreadsheets_values->append(

  $spreadsheetId,

  $range,

  $body,

  $params,

  $insert

);

至:

$params = [

  "valueInputOption" => "RAW",

  "insertDataOption" => "INSERT_ROWS"

];

$result = $service->spreadsheets_values->append(

  $spreadsheetId,

  $range,

  $body,

  $params

);

笔记:

此修改后的脚本假设您已经能够使用 Sheets API 获取和放置电子表格的值。

参考:

方法:电子表格.values.append

如果这不是您问题的直接解决方案,我深表歉意。


添加:

当使用您在讨论中提供的另一个问题的链接中的脚本时,整个脚本反映了我修改的脚本如下。在运行脚本之前,请设置 和 的$spreadsheetId变量$range。在运行脚本之前,请确认credentials.json并删除token.json. 然后,运行脚本。届时,请重新授权。通过这一点,我认为脚本有效。


范围从 更改Google_Service_Sheets::SPREADSHEETS_READONLY为Google_Service_Sheets::SPREADSHEETS。


整个脚本:

<?php

require __DIR__ . '/vendor/autoload.php';


if (php_sapi_name() != 'cli') {

 throw new Exception('This application must be run on the command line.');

}


function getClient()

{

  $client = new Google_Client();

  $client->setApplicationName('Google Sheets API PHP Quickstart');

  $client->setScopes(Google_Service_Sheets::SPREADSHEETS);

  $client->setAuthConfig('credentials.json');

  $client->setAccessType('offline');

  $client->setPrompt('select_account consent');


  $tokenPath = 'token.json';

  if (file_exists($tokenPath)) {

    $accessToken = json_decode(file_get_contents($tokenPath), true);

    $client->setAccessToken($accessToken);

  }


  if ($client->isAccessTokenExpired()) {

    if ($client->getRefreshToken()) {

        $client->fetchAccessTokenWithRefreshToken($client->getRefreshToken());

    } else {

        $authUrl = $client->createAuthUrl();

        printf("Open the following link in your browser:\n%s\n", $authUrl);

        print 'Enter verification code: ';

        $authCode = trim(fgets(STDIN));


        $accessToken = $client->fetchAccessTokenWithAuthCode($authCode);

        $client->setAccessToken($accessToken);


        if (array_key_exists('error', $accessToken)) {

            throw new Exception(join(', ', $accessToken));

        }

    }

    if (!file_exists(dirname($tokenPath))) {

        mkdir(dirname($tokenPath), 0700, true);

    }

    file_put_contents($tokenPath, json_encode($client->getAccessToken()));

}

  return $client;

}



$client = getClient();

$service = new Google_Service_Sheets($client);


$spreadsheetId = "###"; // Spreadsheet ID

$range = "###"; // Sheet name


$values = [["This","is","a","new","row"],];

$body = new Google_Service_Sheets_ValueRange([

   "values" =>$values

]);

$params = [

  "valueInputOption" => "RAW",

  "insertDataOption" => "INSERT_ROWS"

];

$result = $service->spreadsheets_values->append(

  $spreadsheetId,

  $range,

  $body,

  $params

);


查看完整回答
反对 回复 2022-05-27
  • 1 回答
  • 0 关注
  • 122 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信