通过将电子表格ID和页ID获取g ooglesheet数据

问题描述 投票:0回答:1

我需要得到谷歌的表数据,然后将其下载为csv。但问题是,我需要通过纸张ID在U​​RL中获取数据。我使用这个包"google/apiclient": "^2.0"

        $sheets = new \Google_Service_Sheets($client);

        //get spreadsheet id from db
        $google_sheet_link = TeamGoogleSheet::where('team_id',$team_id)->first();
        $url_array         = parse_url($google_sheet_link->url);
        $path_array        = explode("/",$url_array["path"]);
        $spreadsheetId     = $path_array[3];
        \Log::info('Spreadsheet id');
        \Log::info($spreadsheetId);

        $range = 'Sheet1';
        $rows = $sheets->spreadsheets_values->get($spreadsheetId, $range, ['majorDimension' => 'ROWS']);
        if (isset($rows['values'])) {
            $filename = storage_path("chat_bots.csv");
            if (file_exists($filename))
                unlink($filename);
            $handle = fopen($filename, 'a'); 
            foreach ($rows['values'] as $key => $data) {
                fputcsv($handle, $data);
            }
            fclose($handle);

            $headers = array(
                'Content-Type' => 'text/csv',
            );

            return \Response::download($filename, 'chat_bots.csv', $headers);       

        }

但是这需要工作表名称(范围属性),也只有1 sheet.I想让它充满活力。我们可以从以下网址获得sheetid,但没有找到通过这个表ID检索数据的方法。

php google-sheets
1个回答
0
投票
        $spreadsheet_data = $sheets->spreadsheets->get($spreadsheetId); 

        //get sheet titles
        $work_sheets = [];
        $gid_sheet = '';
        foreach($spreadsheet_data->getSheets() as $s) {
            $work_sheets[] = $s['properties']['title'];
        }
        if(preg_match("/[#&]gid=([0-9]+)/", $google_sheet_link->url)){
            $explode_array = explode("#gid=",$google_sheet_link->url);
            $gid = $explode_array[1];                
            foreach($spreadsheet_data->getSheets() as $s) {
                if($s['properties']['sheetId'] == $gid)
                    $gid_sheet = $s['properties']['title'];
            }
        }
        if($gid_sheet != ''){
            $range = $gid_sheet;
        }
        else{
            $range = $work_sheets[0];
        }
© www.soinside.com 2019 - 2024. All rights reserved.