Repository navigation
Update wins data to be posted to new project board #8701
Description
Prerequisite
- Be a member of Hack for LA. (There are no fees to join.) If you have not joined yet, please follow the steps on our Getting Started page and attend an onboarding session.
- Before you claim or start working on an issue, please make sure you have read our How to Contribute to Hack for LA Guide.
Overview
We need to update the Wins Google Apps scripts so that it starts adding issues from the old project board to the new project board's "Questions/In Review" column.
To set an issue's status, the current code uses a combination of REST API calls and Column Keys. The new project board uses GraphQL API calls and Status Field IDs. We must update this behavior to maintain the Wins workflow.
Action Items
- Refer to ALL of the steps in the Wins Google App Script documentation to set up your local environment for testing and development. 1
- Message a Team Lead to gain access to the following files required for this issue:
- Wins Form Admin Guide (To understand the Wins workflow)
- Wins-form (Responses) Google Sheet
- Wins-form Google Form
- gh-requests Google Document
- Set up your testing and development environment with the documentation provided.
- Message a Team Lead to gain access to the following files required for this issue:
- Trace how Wins are posted as issues to the old project board by reviewing
addIssueToProjectBoardColumnin the following files:google-apps-scripts/gh-requests/Code.jsgoogle-apps-scripts/wins-form-responses/Code.js
- In
gh-requests/Code.js:- Remove and replace classic Projects REST API calls with GraphQL mutations for Projects v2 compatibility by refactoring
addIssueToProjectBoardColumn. Rename the function to reflect this migration. 2 - You will need to add a GraphQL request helper, similar to existing REST request helpers.
- Remove and replace classic Projects REST API calls with GraphQL mutations for Projects v2 compatibility by refactoring
- In
wins-form-responses/Code.js:- Refer to the Status Field IDs utility file then note
PROJECT_ID,FIELD_ID, and any issue status fields that need to be replaced. 3 - Replace
COLUMN_KEYSwith a Project v2 Status Field ID object. IncludePROJECT_IDandFIELD_IDas they will be needed for GraphQL calls. - Edit the
createIssuefunction with your updatedaddIssueToProjectBoardfunction. - Ensure that the issue Status Field ID is set to
"InReview".
- Refer to the Status Field IDs utility file then note
- Additional fix for column numbering issue in
wins-form-responses/Code.js:- In the
mainfunction, replace:
with:// Filter out only the rows where display-column(colum 15) is set to true const filteredRows = Array.from(allRows).filter(win => win[15] === true);// Filter out only the rows where display column is set to true const display = columnHeaders.indexOf("Display?"); if (display == -1){ console.log("Ending script; Display column not found."); return 1; } const filteredRows = Array.from(allRows).filter(win => win[display] === true); - In the
- Test your changes locally and verify that any test Wins submissions populate your local fork.
- While testing, ensure the Wins responses Sheet contains LinkedIn Name and GitHub Handle columns as specified in 3.d of the Wins documentation. 1
- Remove any console output for GitHub PAT
- Refer to
9. Completing an issuein the Wins documentation before you create your PR. 1
Resources/Instructions
- Wins page URL: https://www.hackforla.org/wins
Footnotes
-
Wins Google App Script documentation and how to set up testing environment: Wins Google App Script Development Process ↩ ↩2 ↩3
-
GitHub Projects v2 GraphQL Documentation (take a look at addProjectV2ItemById and updateProjectV2ItemFieldValue): https://docs.github.com/en/graphql/reference/projects ↩
-
Website Project v2 Status Field IDs: https://github.com/hackforla/website/blob/gh-pages/github-actions/utils/_data/status-field-ids.js ↩
Metadata
Metadata
Assignees
Labels
Type
Projects
- StatusShow more project fieldsIn progress (actively working)
Activity
[-]Update wins data to be posted to the new project board[/-][+]Update wins data to be posted to new project board[/+]daras-cu commentedon Jul 1, 2026
castillios commentedon Jul 1, 2026
14 remaining items
castillios commentedon Aug 21, 2026
Status update for review: #8616 (comment)
daras-cu commentedon Sep 3, 2026
@castillios I finally figured out the issue, there's a line in the Wins form (Responses) script that had the column ID for the 'Display?' column hard-coded and it was incorrect, so the script was not finding any rows that were supposed to be displayed. I'm adding another action item to this issue to fix it. The new code will look for the column named 'Display?' and if it is not found, the script will exit with an error.
Once you make that change, check in your Responses spreadsheet that the last two columns have 'Display?' and 'Homepage?' as the headers. I think when you choose options on the Review sheet they automatically populate but just in case. I also added the headers to the developer copy of the spreadsheet so they will be present whenever someone copies it in the future.
hfla-graphql-app commentedon Sep 4, 2026
castillios commentedon Sep 5, 2026
Hi @daras-cu! Thanks for the fix, it worked perfectly and PR creation is now functional in my fork. Unfortunately I discovered another small bug and I have a question regarding next steps.
The "Select the team(s) you're on" column gets erased on every submission. I see it populated for a second whenever I submit a Win, then it disappears. Weirdly enough, if I include a GitHub profile URL it gets overwritten with the specified handle.
After doing some digging to see what edits Google Sheets columns in code, I found that
insertLatestFormSubmitIntoReviewSheet(ingoogle-apps-scripts/wins-form-responses/Code.js) tries accounting for columns that do not exist in the actual Sheet (i.e. LinkedIn Name & Github Handle). The trigger writes into a GitHub Handle column, but in reality its writing into the Team(s) column. I attached screenshots of the code and me recreating the issue below in each dropdown.I saw this snippet containing columns for LinkedIn and GitHub handles in `insertLatestFormSubmitIntoReviewSheet`
This was where the write was occurring in columns E and H
I confirmed my suspicions by recreating the bug here
I'd like to write up an action item in this issue to resolve the bug by removing these columns in the code and the writes to them. But before I do, I wanted to check: Are we meant to have a LinkedIn Name & GitHub Handle column, and where? Or are they outdated columns and therefore safe to remove?
daras-cu commentedon Sep 6, 2026
@castillios you're correct, the responses are not populating correctly because those two columns are missing. This is actually connected to the problem we were having previously with the Display column, since it was taking those columns into account with the hard-coded column index. I did some testing and it looks like when the Google Form is manually linked to the Responses sheet it only adds the columns that correspond to form questions. When I copied the files initially to share with developers I had to re-link the form, so the version I shared with you was already missing the columns. We do want those two additional columns, as well as the Display and Homepage columns at the end, so I added an additional step to the guide, 3.d. I'll copy it here:
d. For all issues: Additional Columns. There are four columns in the ‘Responses’ sheet that do not have corresponding questions in the Google Form. In the process of copying the spreadsheet and linking it to the form, these columns may be deleted. If your ‘Responses’ sheet does not have columns N-Q populated:
i. Add a column to the right of ‘Linkedin URL (optional)’ called ‘LinkedIn Name’.
ii. Add a column to the right of ‘Github URL (optional)’ called ‘GitHub Handle’.
iii. After the last column, ‘Give us a brief overview’, add two additional columns called ‘Display?’ and ‘Homepage?’.
I added the columns back to the developer version of the file so this step won't usually be needed unless the form and spreadsheet are not linked after copying. Try adding the two columns back to your sheet and see if that resolves the issue. Assuming that works, I still think we should make the previous code change to search for the 'Display?' column rather than hard-coding it, even though it would be column 15 again.
Thanks again for going through this, that was an important update for the guide!
castillios commentedon Sep 8, 2026
Thank you for the clarification @daras-cu. I added the columns as you specified and it worked. The PR for this issue is now up in #8779. Glad to hear that this contributed to the guide!