ODK Collect - Google Drive/Sheets Integration to Collect, Manage and Store Data

Hello Community Members,

I appreciate the developers/authors of the process that uses ODK Collect to collect, and Google Drive to Store and Manage Data as detailed here https://www.google.com/earth/outreach/learn/odk-collect-and-google-drive-integration-to-store-and-manage-your-data/.

Here is my concern:

Integration of the ODK .xml form and Google sheet includes copying the sheet URL, navigating to ODK Build and go to Edit > Form Properties, and pasting it in the submission URL field. The Google sheet URL will appear in the .xml form, as seen below

<submission method="form-data-post" action="https://docs.google.com/spreadsheets/d/sheed_id/edit#gid=0"/>

and can be seen by anyone with the XML form shared to him/her via Google Drive. Furthermore, data collection using ODK Collect and Google sheet requires edit access (from Google sheet) so that the submitted data can be written on it.

Suppose you're in a scenario where you need about 200 people to assist you to collect data from different regions and sending them to the same Google sheet. This means everyone out of these 200 people can see the data, can edit the sheet, can share the sheet URL with third parties if she/he wants to, or even delete the data. While the data can now be seen by all the 200 individuals may be plus other third parties, I wanted the submitted data to be anonymous, and also to avoid the risk of data loss, I wanted to deny the edit access to the 200 data collectors.


Is there a way of at least not sharing the Google sheet URL via XML form when collecting data using ODK Collect for submission to Google sheets? What can be done If I want to stick with this method to collect and manage data while avoiding the risks I highlighted above?

Thank you very much,


Hi @Elimboto

We're glad you're here. When you get a chance, please introduce yourself on this forum thread. I'd also encourage you to add a real picture as your avatar because it helps build community!

Sheets API requires spreadsheetId to perform operations like reading/writing and that id is a part of the url so that's why we pass the url. It's not possible to hide it.

Thank you @Grzesiek2010.