PHP Quickstart

Complete the steps described in the rest of this page to create a simple PHP command-line application that makes requests to the Google Apps Script API.


To run this quickstart, you need the following prerequisites:

  • PHP 5.4 or greater with the command-line interface (CLI) and JSON extension installed
  • The Composer dependency management tool
  • A Google account with Google Drive enabled

Step 1: Turn on the Google Apps Script API


Enable the Google Apps Script API


Step 2: Install the Google Client Library

composer require google/apiclient:^2.0

See the library's installation page for the alternative installation options.

Step 3: Set up the sample

Create a file named quickstart.php in your working directory and copy in the following code:

require __DIR__ . '/vendor/autoload.php';

if (php_sapi_name() != 'cli') {
    throw new Exception('This application must be run on the command line.');

 * Returns an authorized API client.
 * @return Google_Client the authorized client object
function getClient()
    $client = new Google_Client();
    $client->setApplicationName('Google Apps Script API PHP Quickstart');
    $client->setPrompt('select_account consent');

    // Load previously authorized token from a file, if it exists.
    // created automatically when the authorization flow completes for the first
    // time.
    $tokenPath = 'token.json';
    if (file_exists($tokenPath)) {
        $accessToken = json_decode(file_get_contents($tokenPath), true);

    // If there is no previous token or it's expired.
    if ($client->isAccessTokenExpired()) {
        // Refresh the token if possible, else fetch a new one.
        if ($client->getRefreshToken()) {
        } else {
            // Request authorization from the user.
            $authUrl = $client->createAuthUrl();
            printf("Open the following link in your browser:\n%s\n", $authUrl);
            print 'Enter verification code: ';
            $authCode = trim(fgets(STDIN));

            // Exchange authorization code for an access token.
            $accessToken = $client->fetchAccessTokenWithAuthCode($authCode);

            // Check to see if there was an error.
            if (array_key_exists('error', $accessToken)) {
                throw new Exception(join(', ', $accessToken));
        // Save the token to a file.
        if (!file_exists(dirname($tokenPath))) {
            mkdir(dirname($tokenPath), 0700, true);
        file_put_contents($tokenPath, json_encode($client->getAccessToken()));
    return $client;

 * Shows basic usage of the Apps Script API.
 * Call the Apps Script API to create a new script project, upload files to the
 * project, and log the script's URL to the user.
$client = getClient();
$service = new Google_Service_Script($client);

// Create a management request object.
$request = new Google_Service_Script_CreateProjectRequest();
$request->setTitle('My Script');
$response = $service->projects->create($request);

$scriptId = $response->getScriptId();

$code = <<<EOT
function helloWorld() {
  console.log('Hello, world!');
$file1 = new Google_Service_Script_ScriptFile();

$manifest = <<<EOT
  "timeZone": "America/New_York",
  "exceptionLogging": "CLOUD"
$file2 = new Google_Service_Script_ScriptFile();

$request = new Google_Service_Script_Content();
$request->setFiles([$file1, $file2]);

$response = $service->projects->updateContent($scriptId, $request);
echo "" . $response->getScriptId() . "/edit\n";

Step 4: Run the sample

Run the sample using the following command:

php quickstart.php


  1. Browse to the provided URL in your web browser.


  2. Click the Accept button.



Further reading



SSL certificate problem: unable to get local issuer certificate

This error indicates that the underlying HTTP libraries can't find a certificate store, and are therefore unable to setup the SSL connection to Google's servers. See the Guzzle library's documentation for information on how to setup a certificate store on your machine.

Uncaught InvalidArgumentException: missing the required redirect URI

This error occurs when the credentials.json file used contains a client ID of the wrong type. This code requires an OAuth client ID of type Other, which will be created for you when using the button in Step 1. If creating your own client ID please ensure you select the correct type.

This app isn't verified.


Send feedback about...

Apps Script API
Apps Script API
Need help? Visit our support page.