src/bin/readPropertiesFromGoogle2.php
3. // include your composer dependencies
Code on global space
Code on global space
4. require_once 'vendor/autoload.php';
Code on global space
Code on global space
Code on global space
Code on global space
Code on global space
Code on global space
8. $shortopts .= "i:"; // Required - path to incoming duplicate properties directory
Code on global space
Code on global space
Code on global space
9. $shortopts .= "p:"; // Required - path to property definitions directory
Code on global space
Code on global space
Code on global space
10. $shortopts .= "c:"; // Required - path to credentials file for Google Drive API
Code on global space
Code on global space
Code on global space
Code on global space
Code on global space
12. $options = getopt($shortopts);
14. // Incoming errors and duplicates get written here.
Code on global space
Code on global space
Code on global space
Code on global space
Code on global space
Code on global space
Code on global space
15. $incomingDir = realpath($options['i']);
17. // Properties are stored here.
18. // They can be extended and reused across objects.
Code on global space
Code on global space
Code on global space
Code on global space
Code on global space
Code on global space
Code on global space
19. $propertyDir = realpath($options['p']);
20. // Create properties directory if needed
Code on global space
Code on global space
Code on global space
Code on global space
Code on global space
Code on global space
21. if (false === realpath($propertyDir)) {
Code on global space
Code on global space
Code on global space
Code on global space
Code on global space
Code on global space
Code on global space
Code on global space
23. $propertyDir = realpath($propertyDir);
Code on global space
Code on global space
Code on global space
Code on global space
Code on global space
27. define('APPLICATION_NAME', 'Google Sheets API PHP Quickstart');
Code on global space
Code on global space
Code on global space
Code on global space
Code on global space
28. define('CREDENTIALS_PATH', './credentials/sheets.googleapis.com.json');
Code on global space
Code on global space
Code on global space
Code on global space
Code on global space
29. define('CLIENT_SECRET_PATH', './credentials/client_secret.json');
30. // If modifying these scopes, delete your previously saved credentials
31. // at ~/.credentials/sheets.googleapis.com-php-quickstart.json
Code on global space
Code on global space
Code on global space
Code on global space
Code on global space
Code on global space
Code on global space
Code on global space
Code on global space
32. define('SCOPES', implode(' ', array(
Code on global space
Code on global space
33. Google_Service_Sheets::SPREADSHEETS_READONLY)
Code on global space
Code on global space
Code on global space
Code on global space
36. if (php_sapi_name() != 'cli') {
Code on global space
Code on global space
Code on global space
Code on global space
37. throw new Exception('This application must be run on the command line.');
41. * Returns an authorized API client.
42. * @return Google_Client the authorized client object
44. function getClient() {
New instance (Google_Client)
45. $client = new Google_Client();
46. $client->setApplicationName(APPLICATION_NAME);
47. $client->setScopes(SCOPES);
48. $client->setAuthConfig(CLIENT_SECRET_PATH);
49. $client->setAccessType('offline');
51. //$client->setRedirectUri('http://izzup.com/oauth2callback.php');
54. // Load previously authorized credentials from a file.
Global function call (expandHomeDirectory)
55. $credentialsPath = expandHomeDirectory(CREDENTIALS_PATH);
56. if (file_exists($credentialsPath)) {
57. $accessToken = json_decode(file_get_contents($credentialsPath), true);
59. // Request authorization from the user.
60. $authUrl = $client->createAuthUrl();
61. printf("Open the following link in your browser:\n%s\n", $authUrl);
62. print 'Enter verification code: ';
63. $authCode = trim(fgets(STDIN));
65. // Exchange authorization code for an access token.
66. $accessToken = $client->fetchAccessTokenWithAuthCode($authCode);
68. // Store the credentials to disk.
69. if(!file_exists(dirname($credentialsPath))) {
70. mkdir(dirname($credentialsPath), 0700, true);
72. file_put_contents($credentialsPath, json_encode($accessToken));
73. printf("Credentials saved to %s\n", $credentialsPath);
75. $client->setAccessToken($accessToken);
77. // Refresh the token if it's expired.
78. if ($client->isAccessTokenExpired()) {
79. $client->fetchAccessTokenWithRefreshToken($client->getRefreshToken());
80. file_put_contents($credentialsPath, json_encode($client->getAccessToken()));
86. * Expands the home directory alias '~' to the full path.
87. * @param string $path the path to expand.
88. * @return string the expanded path.
90. function expandHomeDirectory($path) {
91. $homeDirectory = getenv('HOME');
92. if (empty($homeDirectory)) {
93. $homeDirectory = getenv('HOMEDRIVE') . getenv('HOMEPATH');
95. return str_replace('~', realpath($homeDirectory), $path);
98. // Get the API client and construct the service object.
Code on global space
Code on global space
Code on global space
99. $client = getClient();
Code on global space
Code on global space
Code on global space
Code on global space
Code on global space
100. $service = new Google_Service_Sheets($client);
Code on global space
Code on global space
Code on global space
104. // Prints the names and majors of students in a sample spreadsheet:
105. // https://docs.google.com/spreadsheets/d/17Eh19JUUKSuk9SLOv-ydiEBjG0GUv_CzA87PuUZIakw/edit
Code on global space
Code on global space
Code on global space
106. $spreadsheetId = '1kcclfnDGn94cVt9UzHCSQbF1LUyhpBEIiHqHuJ1CfC8';
Code on global space
Code on global space
Code on global space
107. $range = 'Properties!A1:c1000';
Code on global space
Code on global space
Code on global space
Code on global space
Code on global space
Code on global space
Code on global space
Code on global space
Code on global space
108. $response = $service->spreadsheets_values->get($spreadsheetId, $range);
Code on global space
Code on global space
Code on global space
Code on global space
109. $values = $response->getValues();
Code on global space
Code on global space
Code on global space
Code on global space
Code on global space
Code on global space
111. if (count($values) == 0) {
Code on global space
Code on global space
112. print "No data found.\n";
Code on global space
Code on global space
Code on global space
114. print "property, type, description:\n";
Code on global space
Code on global space
Code on global space
115. foreach ($values as $row) {
116. // Print columns A and E, which correspond to indices 0 and 4.
Code on global space
Code on global space
Code on global space
Code on global space
Code on global space
Code on global space
Code on global space
Code on global space
Code on global space
Code on global space
Code on global space
Code on global space
Code on global space
Code on global space
Code on global space
117. printf("%s, %s, %s\n", $row[0], $row[1], $row[2]);