Skip to content

Update wins data to be posted to new project board #8701

Description

@castillios

Prerequisite

  1. 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.
  2. 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.
  • Trace how Wins are posted as issues to the old project board by reviewing addIssueToProjectBoardColumn in the following files:
    • google-apps-scripts/gh-requests/Code.js
    • google-apps-scripts/wins-form-responses/Code.js
  • Ingh-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.
  • 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_KEYS with a Project v2 Status Field ID object. Include PROJECT_ID and FIELD_ID as they will be needed for GraphQL calls.
    • Edit the createIssue function with your updated addIssueToProjectBoard function.
    • Ensure that the issue Status Field ID is set to "InReview".
  • Additional fix for column numbering issue in wins-form-responses/Code.js:
    • In the main function, replace:
    // Filter out only the rows where display-column(colum 15) is set to true
    const filteredRows = Array.from(allRows).filter(win => win[15] === true);
    
    with:
    // 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);
    
  • 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 issue in the Wins documentation before you create your PR. 1

Resources/Instructions

Footnotes

  1. Wins Google App Script documentation and how to set up testing environment: Wins Google App Script Development Process ↩ ↩2 ↩3

  2. GitHub Projects v2 GraphQL Documentation (take a look at addProjectV2ItemById and updateProjectV2ItemFieldValue): https://docs.github.com/en/graphql/reference/projects ↩

  3. Website Project v2 Status Field IDs: https://github.com/hackforla/website/blob/gh-pages/github-actions/utils/_data/status-field-ids.js ↩

Activity

  1. added this to the 05. Know HFLA milestone on Jun 28, 2026
  2. changed the title [-]Update wins data to be posted to the new project board[/-] [+]Update wins data to be posted to new project board[/+] on Jun 28, 2026
  3. added
    DraftIssue is still in the process of being created
    ready for merge teamneeds a senior review either to do some re writing or to approve it for ready for prioritization
    and removed
    DraftIssue is still in the process of being created
    on Jun 28, 2026
  4. daras-cu commented on Jul 1, 2026

    @daras-cu
  5. castillios commented on Jul 1, 2026

    @castillios
    Author
  6. 14 remaining items

  7. added
    status: UpdatedNo blockers and update is ready for review
    and removed on Aug 21, 2026
  8. castillios commented on Aug 21, 2026

    @castillios
    MemberAuthor

    Status update for review: #8616 (comment)

  9. added
    size: 3ptCan be done in 13-18 hours
    and removed
    size: 2ptCan be done in 7-12 hours
    on Sep 3, 2026
  10. daras-cu commented on Sep 3, 2026

    @daras-cu
    Member

    @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.

  11. hfla-graphql-app commented on Sep 4, 2026

    @hfla-graphql-app
  12. added
    status: UpdatedNo blockers and update is ready for review
    and removed on Sep 5, 2026
  13. castillios commented on Sep 5, 2026

    @castillios
    MemberAuthor

    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.

    Image

    After doing some digging to see what edits Google Sheets columns in code, I found that insertLatestFormSubmitIntoReviewSheet (in google-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` Image
    This was where the write was occurring in columns E and H Image
    I confirmed my suspicions by recreating the bug here Image

    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?

  14. daras-cu commented on Sep 6, 2026

    @daras-cu
    Member

    @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!

  15. castillios commented on Sep 8, 2026

    @castillios
    MemberAuthor

    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!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

Relationships

None yet

Development

No branches or pull requests

Issue actions