Hi Rich,
Thanks so much for responding to my query, and apologies that my explanation of what I'm trying to do wasn't so clear.
Basically the test customer database was created in 2017, and the DOB of the customers in the DB is dynamic which keeps the age static. So the Excel doc we have works out their age in days at the time the test pack was produced, and in another column deducts that value from \"TODAY\" to produce a new date of birth which maintains the customer's age. So if the customer was 10,000 days old when the test pack was created, the date in this column will mean they are always 10,000 days old (this reflects the DOB in the database). Hope that makes more sense.
So the value in the DOB field is dynamic, and I want to use this Excel doc as a data source. My aim is that I will be able to choose a test customer name from the test pack at random, and using the values in <Forename></Forename> and <Surname></Surname>, ReadyAPI will look up the DOB from the corresponding row in the Data Source and pull that value in the DOB column through into the <DOB></DOB> field.
Thanks
Rachael
","body@stripHtml({\"removeProcessingText\":false,\"removeSpoilerMarkup\":false,\"removeTocMarkup\":false,\"truncateLength\":200})@stringLength":"218","kudosSumWeight":0,"postTime":"2022-02-16T06:53:19.233-08:00","lastPublishTime":"2022-02-16T06:53:19.233-08:00","metrics":{"__typename":"MessageMetrics","views":1826},"visibilityScope":"PUBLIC","placeholder":false,"originalMessageForPlaceholder":null,"isEscalated":null,"solution":false,"entityType":"FORUM_REPLY","eventPath":"category:ready_api_forums/community:nwkab66374board:readyapi-questions/message:230041/message:230081","replies":{"__typename":"MessageConnection","pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null},"edges":[{"__typename":"MessageEdge","cursor":"MjUuMnwyLjF8b3wxfDE0OjAsMzk6MXwx","node":{"__ref":"ForumReplyMessage:message:230089"}}]},"customFields":[],"attachments":{"__typename":"AttachmentConnection","edges":[],"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"editFrozen":false,"body@stringLength":"1259","rawBody":"Hi Rich,
Thanks so much for responding to my query, and apologies that my explanation of what I'm trying to do wasn't so clear.
Basically the test customer database was created in 2017, and the DOB of the customers in the DB is dynamic which keeps the age static. So the Excel doc we have works out their age in days at the time the test pack was produced, and in another column deducts that value from \"TODAY\" to produce a new date of birth which maintains the customer's age. So if the customer was 10,000 days old when the test pack was created, the date in this column will mean they are always 10,000 days old (this reflects the DOB in the database). Hope that makes more sense.
So the value in the DOB field is dynamic, and I want to use this Excel doc as a data source. My aim is that I will be able to choose a test customer name from the test pack at random, and using the values in <Forename></Forename> and <Surname></Surname>, ReadyAPI will look up the DOB from the corresponding row in the Data Source and pull that value in the DOB column through into the <DOB></DOB> field.
Thanks
Rachael
","images":{"__typename":"AssociatedImageConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"timeToRead":1,"currentRevision":{"__ref":"Revision:revision:230081_1"},"latestVersion":null,"messagePolicies":{"__typename":"MessagePolicies","canModerateSpamMessage":{"__typename":"PolicyResult","failureReason":{"__typename":"FailureReason","message":"error.lithium.policies.feature.moderation_spam.action.moderate_entity.allowed.accessDenied","key":"error.lithium.policies.feature.moderation_spam.action.moderate_entity.allowed.accessDenied","args":[]}}}},"ModerationData:moderation_data:230089":{"__typename":"ModerationData","id":"moderation_data:230089","status":"APPROVED","rejectReason":null,"isReportedAbuse":false,"rejectUser":null,"rejectTime":null,"rejectActorType":null},"ForumReplyMessage:message:230089":{"__typename":"ForumReplyMessage","author":{"__ref":"User:user:39914"},"id":"message:230089","revisionNum":1,"uid":230089,"depth":3,"hasGivenKudo":false,"subscribed":false,"board":{"__ref":"Forum:board:readyapi-questions"},"parent":{"__ref":"ForumReplyMessage:message:230081"},"conversation":{"__ref":"Conversation:conversation:230041"},"subject":"Re: Return DOB for specified customer from Excel workbook (similar to Excel VLOOKUP)","moderationData":{"__ref":"ModerationData:moderation_data:230089"},"body":"Hey Rachael,
I think it might help if I give a bit more context to the situation.
I work for a financial institution that provides mortgages, so the test cases I'm putting through are test mortgage applications. When I run the XML request (or 'submit the application') it compares my customer's name, DOB and address to the 'Credit Reference Agency' (CRA) data, or the customer database. I don't have direct access to this to be able to reference the DOB's directly from there, which is where the spreadsheet comes in - it calculates the DOB to mirror what will be in the CRA data, so I can use the DOB from the spreadsheet to get a match on my customer from the CRA.
So I want to be able to choose any customer from our list, and for it to cross reference the customer's name with the spreadsheet (which I thought was my Data source but maybe I'm wrong? Sorry I'm very new to this). So I don't necessarily want to pick a random row, I just want it to return the correct DOB whether I choose the customer on row 1, 100 or 1000 (choosing the customer would be 'at random' by me, but not actually randomised in the technical sense of the word).
\"What you need is the means to iterate over each row in Excel until you find the matching forename/surname pairing and return the DOB for that.\"
Yeah, this is exactly what I need.
At times I may run 150 test steps in a row, but other times it may only be a handful of test steps. The same customer information is likely to be used in each test step, but different customers may be used, and some test cases may be testing scenarios with up to 4 applicants, so there will be 4 different DOBs to match.
Sorry again if I still haven't managed to make it fully clear, so far the most advanced thing I've managed to do in ReadyAPI is set custom project properties and reference them in my XML, so I'm very much at a beginner stage!
","body@stripHtml({\"removeProcessingText\":false,\"removeSpoilerMarkup\":false,\"removeTocMarkup\":false,\"truncateLength\":200})@stringLength":"223","kudosSumWeight":0,"postTime":"2022-02-17T02:22:58.365-08:00","lastPublishTime":"2022-02-17T02:22:58.365-08:00","metrics":{"__typename":"MessageMetrics","views":1772},"visibilityScope":"PUBLIC","placeholder":false,"originalMessageForPlaceholder":null,"isEscalated":null,"solution":false,"entityType":"FORUM_REPLY","eventPath":"category:ready_api_forums/community:nwkab66374board:readyapi-questions/message:230041/message:230124","replies":{"__typename":"MessageConnection","pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null},"edges":[{"__typename":"MessageEdge","cursor":"MjUuMnwyLjF8b3wzfDE0OjAsMzk6MXwx","node":{"__ref":"AcceptedSolutionMessage:message:230128"}},{"__typename":"MessageEdge","cursor":"MjUuMnwyLjF8b3wzfDE0OjAsMzk6MXwy","node":{"__ref":"ForumReplyMessage:message:230126"}}]},"customFields":[],"attachments":{"__typename":"AttachmentConnection","edges":[],"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"editFrozen":false,"body@stringLength":"2416","rawBody":"
I think it might help if I give a bit more context to the situation.
I work for a financial institution that provides mortgages, so the test cases I'm putting through are test mortgage applications. When I run the XML request (or 'submit the application') it compares my customer's name, DOB and address to the 'Credit Reference Agency' (CRA) data, or the customer database. I don't have direct access to this to be able to reference the DOB's directly from there, which is where the spreadsheet comes in - it calculates the DOB to mirror what will be in the CRA data, so I can use the DOB from the spreadsheet to get a match on my customer from the CRA.
So I want to be able to choose any customer from our list, and for it to cross reference the customer's name with the spreadsheet (which I thought was my Data source but maybe I'm wrong? Sorry I'm very new to this). So I don't necessarily want to pick a random row, I just want it to return the correct DOB whether I choose the customer on row 1, 100 or 1000 (choosing the customer would be 'at random' by me, but not actually randomised in the technical sense of the word).
\"What you need is the means to iterate over each row in Excel until you find the matching forename/surname pairing and return the DOB for that.\"
Yeah, this is exactly what I need.
At times I may run 150 test steps in a row, but other times it may only be a handful of test steps. The same customer information is likely to be used in each test step, but different customers may be used, and some test cases may be testing scenarios with up to 4 applicants, so there will be 4 different DOBs to match.
Sorry again if I still haven't managed to make it fully clear, so far the most advanced thing I've managed to do in ReadyAPI is set custom project properties and reference them in my XML, so I'm very much at a beginner stage!
","images":{"__typename":"AssociatedImageConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"timeToRead":2,"currentRevision":{"__ref":"Revision:revision:230124_1"},"latestVersion":null,"messagePolicies":{"__typename":"MessagePolicies","canModerateSpamMessage":{"__typename":"PolicyResult","failureReason":{"__typename":"FailureReason","message":"error.lithium.policies.feature.moderation_spam.action.moderate_entity.allowed.accessDenied","key":"error.lithium.policies.feature.moderation_spam.action.moderate_entity.allowed.accessDenied","args":[]}}}},"ModerationData:moderation_data:230128":{"__typename":"ModerationData","id":"moderation_data:230128","status":"APPROVED","rejectReason":null,"isReportedAbuse":false,"rejectUser":null,"rejectTime":null,"rejectActorType":null},"AcceptedSolutionMessage:message:230128":{"__typename":"AcceptedSolutionMessage","uid":230128,"id":"message:230128","revisionNum":1,"author":{"__ref":"User:user:91233"},"readOnly":false,"repliesCount":3,"depth":2,"hasGivenKudo":false,"subscribed":false,"board":{"__ref":"Forum:board:readyapi-questions"},"parent":{"__ref":"ForumReplyMessage:message:230124"},"conversation":{"__ref":"Conversation:conversation:230041"},"subject":"Re: Return DOB for specified customer from Excel workbook (similar to Excel VLOOKUP)","moderationData":{"__ref":"ModerationData:moderation_data:230128"},"body":"Hi,
\n\n
Re iterating over a spreadsheet to find a row.
\n\n
I'm using this table in my Excel lookup spreadsheet.
\nCustomerId | \nCustomer Name | \nSurname | \nDOB | \n
1 | \nJohn | \nLennon | \n9/10/1940 | \n
2 | \nPaul | \nMcCartney | \n18/6/1942 | \n
3 | \nGeorge | \nHarrison | \n25/2/1943 | \n
4 | \nRingo | \nStarkey | \n7/7/1940 | \n
\n
To do the lookup, I wrote some Groovy script. I used this page to help me read the Excel spreadsheet... https://www.anilvij.com/how-to-read-data-from-excel-using-groovy-soapui/ in order to write my Groovy script.
\n\n
Here's the Groovy script you can use as an example. Note : This works for xls files, not xlsx.
\nimport com.eviware.soapui.support.XmlHolder;\nimport jxl.*;\nimport jxl.write.*;\n\n// For the sake of example, these are the values returned from your db and these are what we will look for in Excel.\ndef forename = \"George\";\ndef surname = \"Harrison\";\ndef dob = \"25/2/1943\";\n\n\nWorkbook workbook1 = Workbook.getWorkbook(new File(\"C:\\\\temp\\\\CustomerData.xls\")) //file containing the data\n\nSheet sheet1 = workbook1.getSheet(0) //Index 0 will read the first sheet from the workbook, you can also specify the sheet name with \"Sheet1\"\n//Sheet sheet1 = workbook1.getSheet(\"Sheet1\")\n\nsize= sheet1.getRows().toInteger() //get the number of rows, each row is a data set\n\nlog.info(\"Number of rows is ${size}.\");\n\n// We will use these in our loop.\ndef found = false;\ndef row = 0;\n\nlog.info(\"Looking for ${forename} ${surname}\");\n\nfor (int i = 1; i < size; i++) {\n\n\tdef id = sheet1.getCell(0,i).getContents(); // getCell(column,row) getContents() teases out the value.\n\tdef sourceForename = sheet1.getCell(1,i).getContents();\n\tdef sourceSurname = sheet1.getCell(2,i) .getContents();\n\n\tlog.info(\"${id} - ${sourceForename} ${sourceSurname}\");\n\n\tif((forename.equals(sourceForename)) && (surname.equals(sourceSurname))) {\n\t\t// We've found a match. Let's note the row and break out of loop to save time.\n\t\tfound = true;\n\t\trow = i;\n\t\tbreak;\n\t}\n}\n\nif(found){\n\t// Compare DOB\n\t// You don't have to use assert, you could use a boolean check or whatever suits.\n\tassert dob == sheet1.getCell(3,row).getContents();\n\tlog.info(\"DOB is a Match!\");\n} else {\n\tlog.info(\"Could not find ${sourceForename} ${sourceSurname} in the Excel lookup sheet.\");\n}\n\nworkbook1.close() //close the file\n\n
\n","body@stripHtml({\"removeProcessingText\":false,\"removeSpoilerMarkup\":false,\"removeTocMarkup\":false,\"truncateLength\":200})@stringLength":"213","kudosSumWeight":2,"postTime":"2022-02-17T04:06:14.124-08:00","lastPublishTime":"2022-02-17T04:06:14.124-08:00","solution":true,"metrics":{"__typename":"MessageMetrics","views":1768},"visibilityScope":"PUBLIC","placeholder":false,"originalMessageForPlaceholder":null,"isEscalated":null,"entityType":"FORUM_REPLY","eventPath":"category:ready_api_forums/community:nwkab66374board:readyapi-questions/message:230041/message:230128","replies":{"__typename":"MessageConnection","pageInfo":{"__typename":"PageInfo","hasNextPage":true,"endCursor":"MjUuMnwyLjF8b3wxfDE0OjAsMzk6MXwx","hasPreviousPage":false,"startCursor":null},"edges":[{"__typename":"MessageEdge","cursor":"MjUuMnwyLjF8b3wxfDE0OjAsMzk6MXwx","node":{"__ref":"ForumReplyMessage:message:230159"}}]},"attachments":{"__typename":"AttachmentConnection","edges":[],"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"customFields":[],"editFrozen":false,"body@stringLength":"3416","rawBody":"
Hi,
\n\n
Re iterating over a spreadsheet to find a row.
\n\n
I'm using this table in my Excel lookup spreadsheet.
\nCustomerId | \nCustomer Name | \nSurname | \nDOB | \n
1 | \nJohn | \nLennon | \n9/10/1940 | \n
2 | \nPaul | \nMcCartney | \n18/6/1942 | \n
3 | \nGeorge | \nHarrison | \n25/2/1943 | \n
4 | \nRingo | \nStarkey | \n7/7/1940 | \n
\n
To do the lookup, I wrote some Groovy script. I used this page to help me read the Excel spreadsheet... https://www.anilvij.com/how-to-read-data-from-excel-using-groovy-soapui/ in order to write my Groovy script.
\n\n
Here's the Groovy script you can use as an example. Note : This works for xls files, not xlsx.
\n","images":{"__typename":"AssociatedImageConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"timeToRead":2,"currentRevision":{"__ref":"Revision:revision:230128_1"},"latestVersion":null,"messagePolicies":{"__typename":"MessagePolicies","canModerateSpamMessage":{"__typename":"PolicyResult","failureReason":{"__typename":"FailureReason","message":"error.lithium.policies.feature.moderation_spam.action.moderate_entity.allowed.accessDenied","key":"error.lithium.policies.feature.moderation_spam.action.moderate_entity.allowed.accessDenied","args":[]}}},"body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":200})@stringLength":"213","videos":{"__typename":"VideoConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}}},"ModerationData:moderation_data:230159":{"__typename":"ModerationData","id":"moderation_data:230159","status":"APPROVED","rejectReason":null,"isReportedAbuse":false,"rejectUser":null,"rejectTime":null,"rejectActorType":null},"ForumReplyMessage:message:230159":{"__typename":"ForumReplyMessage","author":{"__ref":"User:user:39914"},"id":"message:230159","revisionNum":1,"uid":230159,"depth":3,"hasGivenKudo":false,"subscribed":false,"board":{"__ref":"Forum:board:readyapi-questions"},"parent":{"__ref":"AcceptedSolutionMessage:message:230128"},"conversation":{"__ref":"Conversation:conversation:230041"},"subject":"Re: Return DOB for specified customer from Excel workbook (similar to Excel VLOOKUP)","moderationData":{"__ref":"ModerationData:moderation_data:230159"},"body":"
all cred goes to ChrisAdams 🙂
","body@stripHtml({\"removeProcessingText\":false,\"removeSpoilerMarkup\":false,\"removeTocMarkup\":false,\"truncateLength\":200})@stringLength":"43","kudosSumWeight":0,"repliesCount":1,"postTime":"2022-02-17T07:32:28.342-08:00","lastPublishTime":"2022-02-17T07:32:28.342-08:00","metrics":{"__typename":"MessageMetrics","views":1759},"visibilityScope":"PUBLIC","placeholder":false,"originalMessageForPlaceholder":null,"isEscalated":null,"solution":false,"entityType":"FORUM_REPLY","eventPath":"category:ready_api_forums/community:nwkab66374board:readyapi-questions/message:230041/message:230159","customFields":[],"attachments":{"__typename":"AttachmentConnection","edges":[],"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"readOnly":false,"editFrozen":false,"body@stringLength":"309","rawBody":"all cred goes to
Hi,
\n\n
I've got it working. I'll write a reply over lunch.
","body@stripHtml({\"removeProcessingText\":false,\"removeSpoilerMarkup\":false,\"removeTocMarkup\":false,\"truncateLength\":200})@stringLength":"74","kudosSumWeight":0,"repliesCount":0,"postTime":"2022-02-17T03:51:56.600-08:00","lastPublishTime":"2022-02-17T03:51:56.600-08:00","metrics":{"__typename":"MessageMetrics","views":1780},"visibilityScope":"PUBLIC","placeholder":false,"originalMessageForPlaceholder":null,"isEscalated":null,"solution":false,"entityType":"FORUM_REPLY","eventPath":"category:ready_api_forums/community:nwkab66374board:readyapi-questions/message:230041/message:230126","replies":{"__typename":"MessageConnection","pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null},"edges":[]},"customFields":[],"attachments":{"__typename":"AttachmentConnection","edges":[],"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"readOnly":false,"editFrozen":false,"body@stringLength":"89","rawBody":"Hi,
\n\n
I've got it working. I'll write a reply over lunch.
","images":{"__typename":"AssociatedImageConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"timeToRead":1,"currentRevision":{"__ref":"Revision:revision:230126_1"},"latestVersion":null,"messagePolicies":{"__typename":"MessagePolicies","canModerateSpamMessage":{"__typename":"PolicyResult","failureReason":{"__typename":"FailureReason","message":"error.lithium.policies.feature.moderation_spam.action.moderate_entity.allowed.accessDenied","key":"error.lithium.policies.feature.moderation_spam.action.moderate_entity.allowed.accessDenied","args":[]}}}},"QueryVariables:MessageSolutions":{"__typename":"QueryVariables","id":"MessageSolutions","value":{"first":10,"constraints":{"topicId":{"eq":"message:230041"},"solution":{"eq":true}},"sorts":{"postTime":{"direction":"ASC"}},"useAvatar":true,"useAuthorLogin":true,"useAuthorRank":false,"useBody":true,"useKudosCount":false,"useTimeToRead":false,"useMedia":true,"useRepliesCount":false,"useSearchSnippet":false,"useAcceptedSolutionButton":true,"useSolvedBadge":false,"useAttachments":true,"useTags":false,"useUserHoverCard":false,"useNodeHoverCard":false,"usePreviewSubjectModal":false,"useMessageStatus":false}},"CachedAsset:text:en_US-components/messages/EscalatedMessageBanner-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/EscalatedMessageBanner-1741125846000","value":{"escalationMessage":"Escalated to Salesforce by {username} on {date}","viewDetails":"View Details","modalTitle":"Case Details","escalatedBy":"Escalated by: ","escalatedOn":"Escalated on: ","caseNumber":"Case Number: ","status":"Status: ","lastUpdateDate":"Last Update: ","automaticEscalation":"automatic escalation","anonymous":"Anonymous"},"localOverride":false},"CachedAsset:text:en_US-components/users/UserLink-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/users/UserLink-1741125846000","value":{"authorName":"View Profile: {author}","anonymous":"Anonymous"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/users/UserRank-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/users/UserRank-1741125846000","value":{"rankName":"{rankName}","userRank":"Author rank {rankName}"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageTime-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageTime-1741125846000","value":{"postTime":"Published: {time}","lastPublishTime":"Last Update: {time}","conversation.lastPostingActivityTime":"Last posting activity time: {time}","conversation.lastPostTime":"Last post time: {time}","moderationData.rejectTime":"Rejected time: {time}"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageSolvedBadge-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageSolvedBadge-1741125846000","value":{"solved":"Solved"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageSubject-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageSubject-1741125846000","value":{"noSubject":"(no subject)"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageBody-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageBody-1741125846000","value":{"showMessageBody":"Show More","mentionsErrorTitle":"{mentionsType, select, board {Board} user {User} message {Message} other {}} No Longer Available","mentionsErrorMessage":"The {mentionsType} you are trying to view has been removed from the community.","videoProcessing":"Video is being processed. Please try again in a few minutes.","bannerTitle":"Video provider requires cookies to play the video. Accept to continue or {url} it directly on the provider's site.","buttonTitle":"Accept","urlText":"watch"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageCustomFields-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageCustomFields-1741125846000","value":{"CustomField.default.label":"Value of {name}"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageReplyButton-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageReplyButton-1741125846000","value":{"repliesCount":"{count}","title":"Reply","title@board:BLOG@message:root":"Comment","title@board:TKB@message:root":"Comment","title@board:IDEA@message:root":"Comment","title@board:OCCASION@message:root":"Comment"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageSolutionList-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageSolutionList-1741125846000","value":{"emptyDescription":"No has been message solutions yet"},"localOverride":false},"CachedAsset:text:en_US-components/messages/AcceptedSolutionButton-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/AcceptedSolutionButton-1741125846000","value":{"accept":"Mark as Solution","accepted":"Marked as Solution","errorHeader":"Error!","errorAdd":"There was an error marking as solution.","errorRemove":"There was an error unmarking as solution.","solved":"Solved","topicAlreadySolvedErrorTitle":"Solution Already Exists","topicAlreadySolvedErrorDesc":"Refresh the browser to view the existing solution"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/common/Pager/PagerLoadMore-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/common/Pager/PagerLoadMore-1741125846000","value":{"loadMore":"Show More"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageView/MessageViewInline-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageView/MessageViewInline-1741125846000","value":{"bylineAuthor":"{bylineAuthor}","bylineBoard":"{bylineBoard}","anonymous":"Anonymous","place":"Place {bylineBoard}","gotoParent":"Go to parent {name}"},"localOverride":false},"Revision:revision:230048_1":{"__typename":"Revision","id":"revision:230048_1","lastEditTime":"2022-02-15T12:58:13.774-08:00"},"Revision:revision:230081_1":{"__typename":"Revision","id":"revision:230081_1","lastEditTime":"2022-02-16T06:53:19.233-08:00"},"Revision:revision:230089_1":{"__typename":"Revision","id":"revision:230089_1","lastEditTime":"2022-02-16T09:38:09.057-08:00"},"Revision:revision:230124_1":{"__typename":"Revision","id":"revision:230124_1","lastEditTime":"2022-02-17T02:22:58.365-08:00"},"Revision:revision:230126_1":{"__typename":"Revision","id":"revision:230126_1","lastEditTime":"2022-02-17T03:51:56.600-08:00"},"Revision:revision:230128_1":{"__typename":"Revision","id":"revision:230128_1","lastEditTime":"2022-02-17T04:06:14.124-08:00"},"Revision:revision:230159_1":{"__typename":"Revision","id":"revision:230159_1","lastEditTime":"2022-02-17T07:32:28.342-08:00"},"CachedAsset:text:en_US-shared/client/components/users/UserAvatar-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/users/UserAvatar-1741125846000","value":{"altText":"{login}'s avatar","altTextGeneric":"User's avatar"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/ranks/UserRankLabel-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/ranks/UserRankLabel-1741125846000","value":{"altTitle":"Icon for {rankName} rank"},"localOverride":false},"CachedAsset:text:en_US-components/tags/TagView/TagViewChip-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/tags/TagView/TagViewChip-1741125846000","value":{"tagLabelName":"Tag name {tagName}"},"localOverride":false}}}},"page":"/forums/ForumMessagePage/ForumMessagePage","query":{"boardId":"readyapi-questions","messageSubject":"return-dob-for-specified-customer-from-excel-workbook-similar-to-excel-vlookup","messageId":"230041"},"buildId":"q_bLpq2mflH0BeZigxpj6","runtimeConfig":{"buildInformationVisible":false,"logLevelApp":"info","logLevelMetrics":"info","openTelemetryClientEnabled":false,"openTelemetryConfigName":"smartbear","openTelemetryServiceVersion":"25.2.0","openTelemetryUniverse":"prod","openTelemetryCollector":"http://localhost:4318","openTelemetryRouteChangeAllowedTime":"5000","apolloDevToolsEnabled":false,"inboxMuteWipFeatureEnabled":false},"isFallback":false,"isExperimentalCompile":false,"dynamicIds":["./components/seo/QAPageSchema/QAPageSchema.tsx","./components/community/Navbar/NavbarWidget.tsx","./components/community/Breadcrumb/BreadcrumbWidget.tsx","./components/messages/TopicWithThreadedReplyListWidget/TopicWithThreadedReplyListWidget.tsx","./components/messages/MessageListForNodeByRecentActivityWidget/MessageListForNodeByRecentActivityWidget.tsx","./components/messages/RelatedContentWidget/RelatedContentWidget.tsx","./components/customComponent/CustomComponent/CustomComponent.tsx","./components/messages/MessageView/MessageViewStandard/MessageViewStandard.tsx","./components/messages/ThreadedReplyList/ThreadedReplyList.tsx","../shared/client/components/common/List/UnstyledList/UnstyledList.tsx","./components/messages/MessageView/MessageView.tsx","../shared/client/components/common/Pager/PagerLoadMore/PagerLoadMore.tsx","./components/messages/MessageView/MessageViewInline/MessageViewInline.tsx","./components/customComponent/CustomComponentContent/TemplateContent.tsx","../shared/client/components/common/List/UnwrappedList/UnwrappedList.tsx","./components/tags/TagView/TagView.tsx","./components/tags/TagView/TagViewChip/TagViewChip.tsx"],"appGip":true,"scriptLoader":[]}