MCPcopy Index your code
hub / github.com/simstudioai/sim / fetchLatestResponseTime

Function fetchLatestResponseTime

apps/sim/connectors/google-forms/google-forms.ts:292–325  ·  view source on GitHub ↗

* Reads the latest response submission time for change detection without * retaining responses. Scans every page — the Forms API does not guarantee * response order, so the newest submission may sit on any page. Returns the * greatest `lastSubmittedTime` (falling back to `createTime`), or undefin

(
  accessToken: string,
  formId: string
)

Source from the content-addressed store, hash-verified

290 * `skippedOnError` → `listingCapped`.
291 */
292async function fetchLatestResponseTime(
293 accessToken: string,
294 formId: string
295): Promise<string | undefined> {
296 let latest = ''
297 let pageToken: string | undefined
298
299 do {
300 const url = new URL(`${FORMS_API_BASE}/forms/${encodeURIComponent(formId)}/responses`)
301 url.searchParams.set('pageSize', String(RESPONSES_PAGE_SIZE))
302 if (pageToken) url.searchParams.set('pageToken', pageToken)
303
304 const response = await fetchWithRetry(url.toString(), {
305 method: 'GET',
306 headers: {
307 Authorization: `Bearer ${accessToken}`,
308 Accept: 'application/json',
309 },
310 })
311
312 if (!response.ok) {
313 throw new Error(
314 `Failed to read responses for change detection on form ${formId}: ${response.status}`
315 )
316 }
317
318 const data = (await response.json()) as FormResponseList
319 const pageLatest = latestResponseTime(data.responses ?? [])
320 if (pageLatest && pageLatest > latest) latest = pageLatest
321 pageToken = data.nextPageToken
322 } while (pageToken)
323
324 return latest || undefined
325}
326
327/**
328 * Returns the greatest submission timestamp across the given responses, or

Callers 1

google-forms.tsFile · 0.85

Calls 4

fetchWithRetryFunction · 0.90
latestResponseTimeFunction · 0.85
setMethod · 0.65
toStringMethod · 0.45

Tested by

no test coverage detected