Zoho CRMのAPIで一覧取得サンプルソース2

提供:wiki - PCスキルの小技・忘却防止メモ
移動: 案内, 検索

Zoho CRMのAPIで一覧取得サンプルソース2。

基本

Zoho CRMのAPIで一覧取得サンプルソース」を見やすくしたもの。パラメーターのnewFormatを設定しているので横並びに表示が可能になった。

getRecordsをやったときの戻り値(JSON)を整形したもの。

全パターンに対応していないのでモノによってはエラーになる。単純にvar_dmp()だけの方が良いかもしれない。

修正しないといけない項目

  • $token - 自身のトークン

※必要に応じて、モジュール・APIメソッドやパラメータを修正すれば色々と取得できると思う。

ソース

見ているとデータの格納方法はキーバリューみたいな感じだね。携帯番号とか情報を登録していないと結果に出てこない(パラメータ次第で表示も可能)。

 <?php
 	// 認証トークンなど
 	$token = "「認証トークン」";
 	$scope = "crmapi";
 	$auth = "authtoken={$token}&scope={$scope}&newFormat=2";
 	
 	// 取得形式:json or xml
 	$format = "json";
 	
 	// モジュール(データベースで言うトコのテーブル名)
 	$module = "Accounts";
 	
 	// API Methods
 	$api = "getRecords";
 	
 	// パラメーター(newFormatはデフォルトで設定しているので設定不可)
 	//$pram = "&selectColumns=Leads(Lead Name,Company,Email)&searchCondition=(LEADID|=|965772000000082005)";
 	$pram = "";
 	$convParm = preg_replace('/ /', '+', $pram);
 	
 	// 設定ここまで ===============
 	function mergeAry($mergeAry, $dataAry) {
 		foreach($dataAry as $data) {
 			for($i=0; $i<count($mergeAry); $i++) {
 				if ($mergeAry[$i]["column"] == $data->val) {
 					$mergeAry[$i]["value"][] = $data->content;
 					continue 2;
 				}
 			}
 			$mergeAry[$i]["column"] = $data->val;
 			$mergeAry[$i]["value"] = array();
 		}
 		return $mergeAry;
 	}
 	
 	function makeTable($dataAry) {
 		$tr = "";
 		$th = "";
 		$tdAry = array();
 		
 		foreach($dataAry as $data) {
 			$th .= "<th>" . $data["column"] . "</th>\n";
 			for($i=0; $i<count($data["value"]); $i++) {
 				if (array_key_exists($i, $tdAry) !== true) {
 					$tdAry[$i] = "";
 				}
 				$tdAry[$i] .= "<td>" . $data["value"][$i] . "</td>\n";
 			}
 		}
 		
 		$thLine = "<tr>\n" . $th . "</tr>\n";
 		$tdLine = "";
 		foreach($tdAry as $td) {
 			$tdLine .= "<tr>\n" . $td . "</tr>\n";
 		}
 		
 		$result = "<table>\n" . $thLine . $tdLine . "</table>\n";
 		
 		return $result;
 	}
 	
 	$url = "https://crm.zoho.com/crm/private/{$format}/{$module}/{$api}?{$auth}{$convParm}";
 	
 	$source = file_get_contents($url);
 	$sourceObj = json_decode($source);
 	
 	$result = "";
 	if ( property_exists($sourceObj->response, "result") === false) {
 		if ( property_exists($sourceObj->response, "nodata") !== false) {
 			$result .= "<h2>nodata</h2>";
 			$result .= $sourceObj->response->nodata->code . ": ";
 			$result .= $sourceObj->response->nodata->message;
 		}
 		if ( property_exists($sourceObj->response, "error") !== false) {
 			$result .= "<h2>error</h2>";
 			$result .= $sourceObj->response->error->code . ": ";
 			$result .= $sourceObj->response->error->message;
 		}
 	}
 	else {
 		$rowAry = $sourceObj->response->result->$module->row;
 		
 		$rowType = gettype($rowAry);
 		$mergeAry = array();
 		if ($rowType == "array") {
 			foreach($rowAry as $num=>$row) {
 				$mergeAry = mergeAry($mergeAry, $row->FL);
 			}
 		}
 		else if ($rowType == "object"){
 			foreach($rowAry as $num=>$row) {
 				$mergeAry = mergeAry($mergeAry, $row);
 			}
 		}
 		
 		$result .= makeTable($mergeAry);
 	}
 ?>
 <!DOCTYPE html>
 <html dir="ltr" lang="ja">
 <head>
 <meta charset="UTF-8" />
 <title>ZOHO CRM</title>
 <style>
 	* {font-family:"メイリオ";}
 	h2 {
 		margin:1em 0 0;
 		font-size:1.5em;
 	}
 	table {
 		margin:0.5em 0 0;
 		border-collapse:collapse;
 	}
 	th, td{
 		text-align:left;
 		vertical-align:top;
 		padding:3px;
 		border:1px solid #ccc;
 		font-size:10pt;
 	}
 	th{
 		background:#eee;
 	}
 </style>
 </head>
 <body>
 <?php
 	echo "<h1>モジュール「API Format: {$module}」</h1>";
 	echo "指定したuri: " . $url . "<br />\n";
 	echo "APIが認識したuri: " . $sourceObj->response->uri . "<br />\n";
 	echo "<hr>";
 	
 	echo $result;
 	echo "<hr>";
 	
 	echo "<pre>";
 	print_r($sourceObj);
 	echo "</pre>";
 ?>
 </body>
 </html>

関連項目