搜索

首页  >  问答  >  正文

使用Google Sheets API如何读取二维数组数据?

我是 Google Sheets API 的新手, 目前我正在开发一个系统将数据发送到谷歌表格。 当我尝试发送数据时,它显示错误,例如:无效值 [0][0]

下面是我的代码行。

`

$client = getClientAuth();

        $spreadsheet_ID = $this->spreadsheet->spreadsheetId; 
        
        $range = "Sheet1";

        $values = $this->sheetData;

        $this->service = new Sheets($client);


        $body = new ValueRange([
            'majorDimension' => 'ROWS',
            'values' => [array_map(function($nv) {
                return (is_null($nv)) ? "" : $nv;
              },$values)]
        ]);

        $params = ['valueInputOption' => 'RAW'];

        $insert = ['insertDataOption' => 'INSERT_ROWS'];

        //executing the request
        $data = $this->service->spreadsheets_values->append($spreadsheet_ID, $range,
        $body, $params, $insert);
    
        return $data;

`

P粉351138462P粉351138462323 天前526

全部回复(1)我来回复

  • P粉446800329

    P粉4468003292024-03-31 10:29:39

    根据您的错误消息和显示脚本,我认为在您的情况下, $values 可能是一个二维数组。我认为如果 $values 是一维数组,那么您的脚本就可以工作。另外,请在 $params 中包含 'insertDataOption' => 'INSERT_ROWS'。那么,既然如此,下面的修改如何呢?

    来自:

    $body = new ValueRange([
        'majorDimension' => 'ROWS',
        'values' => [array_map(function($nv) {
            return (is_null($nv)) ? "" : $nv;
          },$values)]
    ]);
    
    $params = ['valueInputOption' => 'RAW'];
    
    $insert = ['insertDataOption' => 'INSERT_ROWS'];
    
    //executing the request
    $data = $this->service->spreadsheets_values->append($spreadsheet_ID, $range,
    $body, $params, $insert);

    致:

    $body = new ValueRange([
        'majorDimension' => 'ROWS',
        'values' => array_map(function($row) {
          return array_map(function($col) {
            return (is_null($col)) ? "" : $col;
          }, $row);
        }, $values)
    ]);
    $params = ['valueInputOption' => 'RAW', 'insertDataOption' => 'INSERT_ROWS'];
    $data = $service->spreadsheets_values->append($spreadsheet_ID, $range, $body, $params);

    $body = new Google_Service_Sheets_ValueRange([
        'majorDimension' => 'ROWS',
        'values' => array_map(function($row) {
          return array_map(function($col) {
            return (is_null($col)) ? "" : $col;
          }, $row);
        }, $values)
    ]);
    $params = ['valueInputOption' => 'RAW', 'insertDataOption' => 'INSERT_ROWS'];
    $data = $service->spreadsheets_values->append($spreadsheet_ID, $range, $body, $params);

    注意:

    • 当使用箭头函数时,我认为可以使用如下修改。

      • 来自

        'values' => array_map(function($row) {
          return array_map(function($col) {
            return (is_null($col)) ? "" : $col;
          }, $row);
        }, $values)
        
      • 'values' => array_map(fn($row) => array_map(fn($col) => (is_null($col)) ? "" : $col, $row), $values)
        

    回复
    0
  • 取消回复