From 2ddf01ea6d4e70c68ecc3b7601bd0d1b9f4d13ef Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Fri, 21 Nov 2025 22:03:47 +0000 Subject: [PATCH 1/2] fix(people): resolve type errors in quickstart Resolves TypeScript errors in the `people/quickstart/quickstart.gs` file by: - Adding JSDoc annotations for `Name`, `Person`, `Connection` and `EmailAddress` types. - Adding a check to ensure the `People` advanced service is enabled. - Removing an unhelpful try/catch block. - Improving the logic to safely access `displayName`. --- people/quickstart/quickstart.gs | 62 ++++++++++++++++++++++----------- 1 file changed, 41 insertions(+), 21 deletions(-) diff --git a/people/quickstart/quickstart.gs b/people/quickstart/quickstart.gs index 749ab63f6..3042d56e7 100644 --- a/people/quickstart/quickstart.gs +++ b/people/quickstart/quickstart.gs @@ -14,31 +14,51 @@ * limitations under the License. */ // [START people_quickstart] +/** + * @typedef {Object} EmailAddress + * @property {string} value + */ + +/** + * @typedef {Object} Name + * @property {string} displayName + */ + +/** + * @typedef {Object} Person + * @property {Name[]} names + * @property {EmailAddress[]} [emailAddresses] + */ + +/** + * @typedef {Object} Connection + * @property {Person[]} connections + */ + /** * Print the display name if available for 10 connections. */ function listConnectionNames() { - try { - /** - * List the 10 connections/contacts of user - * @see https://developers.google.com/people/api/rest/v1/people.connections/list - */ - const connections = People.People.Connections.list('people/me', { - pageSize: 10, - personFields: 'names,emailAddresses' - // use other query parameter here if needed. - }); - connections.connections.forEach((person) => { - // if contacts/connections is available, print the name of person. - if (person.names && person.names.length === 0) { - console.log('No display name found for connection.'); - return; - } - console.log(person.names[0].displayName); - }); - } catch (err) { - // TODO (developer) - Handle exception from People API - console.log('Failed with error %s', err.message); + // Poll the People API to list the connections of the logged in user. + // See: https://developers.google.com/people/api/rest/v1/people.connections/list + if (!People || !People.People || !People.People.Connections) { + // See: https://developers.google.com/apps-script/guides/services/advanced#enable_advanced_services + throw new Error('People service not enabled.'); } + const connections = People.People.Connections.list('people/me', { + pageSize: 10, + personFields: 'names,emailAddresses', + }); + if (!connections.connections) { + console.log('No connections found.'); + return; + } + connections.connections.forEach((person) => { + if (person.names && person.names.length > 0 && person.names[0].displayName) { + console.log(person.names[0].displayName); + } else { + console.log('No display name found for connection.'); + } + }); } // [END people_quickstart] From 0c07852f1fdd73ec416a40614a445a9d72ff6224 Mon Sep 17 00:00:00 2001 From: Justin Poehnelt Date: Fri, 21 Nov 2025 16:49:54 -0700 Subject: [PATCH 2/2] docs: Add JSDoc links to People API definitions and clarify partial type definitions. --- people/quickstart/quickstart.gs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/people/quickstart/quickstart.gs b/people/quickstart/quickstart.gs index 3042d56e7..a4b9512bc 100644 --- a/people/quickstart/quickstart.gs +++ b/people/quickstart/quickstart.gs @@ -16,33 +16,40 @@ // [START people_quickstart] /** * @typedef {Object} EmailAddress + * @see https://developers.google.com/people/api/rest/v1/people#Person * @property {string} value + * Note: This is a partial definition. */ /** * @typedef {Object} Name + * @see https://developers.google.com/people/api/rest/v1/people#Person * @property {string} displayName + * Note: This is a partial definition. */ /** * @typedef {Object} Person + * @see https://developers.google.com/people/api/rest/v1/people#Person * @property {Name[]} names * @property {EmailAddress[]} [emailAddresses] + * Note: This is a partial definition. */ /** * @typedef {Object} Connection + * @see https://developers.google.com/people/api/rest/v1/people.connections/list * @property {Person[]} connections + * Note: This is a partial definition. */ /** * Print the display name if available for 10 connections. */ function listConnectionNames() { - // Poll the People API to list the connections of the logged in user. + // Use the People API to list the connections of the logged in user. // See: https://developers.google.com/people/api/rest/v1/people.connections/list if (!People || !People.People || !People.People.Connections) { - // See: https://developers.google.com/apps-script/guides/services/advanced#enable_advanced_services throw new Error('People service not enabled.'); } const connections = People.People.Connections.list('people/me', {