Can you show me the code where you attempt to write? The error indicates that the spreadsheet ID number is incorrect.
Hi, how to generate .CSV that has multiple sheet tab?
Ok so the problem here is that the URL youâre passing in to get the Sheet Id doesnât have the âgidâ part of the URL in it. If there is no âgidâ part, 0 will be returned since that is usually the default sheet ID.
If you could, please try copy-pasting the link again from your sheet, ensuring that âgidâ is in the query parameters. I can see in your second screenshot that the âgidâ is there in the address bar, so you just gotta make sure itâs in the string variable in unreal as well.
The error occurs because it seems you donât have any tabs in your sheet with a gid of 0, so the default of 0 wonât work here.
CSVs donât really have any way to handle multiple tabs, so instead youâd need to have a CSV for each sheet tab. Just ensure you have a link with the proper gid assigned to each tab.
Hello.
Thank you for such a wonderful plugin
I have a question about encryption.
I use your plugin to get a table (Logins and passwords). (Probably not the best solution).
But nevertheless, when I get a response from (Google excel), it gives me the entire list of passwords, which I then compare with the password that the user entered.
I believe that the variable in which I write all the data can be easily read through third-party programs.
Is there a way to encrypt the data or somehow solve this problem?
How about - TEA (Tiny Encryption Algorithm)?
Hello Nizami_Nz, thank you for your kind words!
I wouldnât recommend RDT for sensitive data, or even Google Sheets for that matter, because as you said, itâs all legible plain text. Google doesnât do any server-side encryption, just account auth. When RDT requests the sheet, Google only responds with plain text.
To do this securely you would either A) have a server instance to which the end user sends the user/pass and have the server check the response against the sheet or B) make sure all data is encrypted before even sending it to Google. Then decrypt when you pull from Google.
Encryption is outside of the scope of the plugin, really. There are myriad solutions for this on the marketplace as is, though! For example, this plugin uses TEA and is available for free: DH Key Exchange and TEA Encryption | Fab
To Answer your questions:
- I have that flow inside of the GameMode Blueprint tied to
Event BeginPlay
. (see image) - No other users / projects are accessing this sheet.
I guess I am mostly wondering what comprises a request ⌠is 1 request equal to all the data on 1 sheet / url or is 1 request equal to 1 row of 1 sheet.
I looked it up and the Google API for Sheets basically limits the Read request per minute per user to 60 (so one Read request per second I guess)
This is the flow I have, one Sheetfile, with 6 sheets / direct sheet URLs being queried.
Yes, this looks solid - 6 total requests every time the Game mode is initialized. That shouldnât be a problem.
Are you a solo developer? Do you work in a team?
Is this a networked game? That is to say would there be multiple game modes initializing at once in a multiplayer setting?
Another idea is that this is a restriction per account - so if youâre making requests to any sheets with the same account, those would count toward the restriction as well.
Try this to troubleshoot on your local workstation - first make sure this setting is checked in Project Settings > Plugins > Runtime DataTable:
Then restart the editor, start the game, and check the logs.
You should only be seeing up to 6 instances of logs like this:
âLogRuntimeDataTable: GenericValidateHttpResponse: GET Response received, success: true, Response code: 200, Responseâ
If you see more than that then that means something is afoot with the setup.
If not then weâll have to dig deeper!
Thank you for posting your solution, I was running into the same issue. Only the last index of the struct/array would be outputted by runtimedatatable. Manually adding the first column of numbers fixed it for me.
Hey! I have quick question about Runtime DataTable Plugin
Iâm developing a multiplayer game. A player converts a local CSV file into a data table. The system I previously built randomly selects a row from the table and sends the question in it to other players as a string. Is this possible?
Hi solucan03! This is absolutely possible. When a CSV is imported with the plugin, it creates a CSV_Map object. There is a function specifically for what youâre asking - âGetRowAsStringArrayâ. It just needs the âkeyâ for the row you want, which is the value in the first column of the CSV. You can also get just a specific cell value, âGetRowValueAsStringâ, based on the row/column name.
New version finally approved for 5.4, 5.5, and 5.6!
-Prevent registering project settings with the editor UI if not with editor
-Implement settings for controlling output logging
-Update EasyCsv module name and deprecation messages
-Ensure a CSVInfo struct has a specific amount of keys before access