1

私はPHP Googleスプレッドシートクライアントを使用しています:PHP GoogleスプレッドシートAPI - (スプレッドシート内の行1)列タイトルを取得します

https://github.com/asimlqt/php-google-spreadsheet-client

をこのクライアントは、APIのV3を実装します。

https://developers.google.com/google-apps/spreadsheets/data

私は通常、このような行を取得:

// simplified code: 
$worksheet = $worksheetFeed->getByTitle($worksheet_id); 
$listFeed = $worksheet->getListFeed(); 


foreach ($listFeed->getEntries() as $entry) 
{ 
    $rows []= $entry->getValues(); 
} 

Googleは「Admin Title」を配列キー「admintitle」に変換します。元のタイトルにGoogleの配列キーのマップを取得したいと思います。例えば、私のようなエントリを持つ配列たい:

[admintitle] => "管理者のタイトルを"

など

私はそれをどのように行うのですか?

答えて

0

これはAPIには何もありませんので、私自身の機能を作ったと思います。 APIクライアントv2.3を使用しています。

function get_worksheet_column_titles($worksheet) 
{ 
    $map = array(); 
    $already_in_map = array(); 

    $row_one_query = array(
     'min-row' => 1, 
     'max-row' => 1 
     ); 

    $cellfeed = $worksheet->getCellFeed($row_one_query); 
    $entries = $cellfeed->getEntries(); 

    foreach ($entries as $cell) 
    { 
     $title = trim($cell->getContent()); 


     if ($title && $title[0] != '_') 
     { 
      $array_key = strtolower(preg_replace('/[^A-Z0-9_-]/i', '', $title)); 

      if ($already_in_map[$array_key]) 
      { 
       // if identical column titles, google adds count to end 

       $seq = 2; 

       while ($already_in_map[$array_key.'_'.$seq]) 
       { 
        $seq++; 
       } 


       $array_key .= "_{$seq}"; 
      } 

      // mark this key as used as used. 
      $already_in_map[$array_key] = true; 

      $map[$array_key] = $title; 
     } 
     else 
     { 
      continue; 
     } 
    } 
    return $map; 
} 
関連する問題