HTTP Error: 405

For the past two years I’ve been using Google Sheets as a global database for a very very small community. Everyone in the community is dependant on this system. I have never had any issues with it, and just for reference I set up the database using this tutorial .

I have made no edits to the system in about 4 days and today I have awoken to Error 405. About 5 hours ago I was able to edit cells in the google sheets however up until 15 minutes ago that too stopped working. There is no issue retrieving data from the database however posting new data or editing existing data is now no longer possible.

Here are the errors:
image

The code in question from Database_Call.DatabaseService:

I have been researching all day, and I’m about 6 hours into searching for a solution with no luck. I am no expert with all this http business and I am hoping someone is able to help me/has experienced this issue and found a solution.

If you need anymore information please let me know.
br_ay
:cowboy_hat_face:

p.s; A friend who uses the same method is experiencing the same problem.

6 Likes

Have you confirmed that your sheet, key, and JSON values are correct? Have you tried using RequestAsync ?

This may be caused by the Google Sheets API being updated. Have you verified that is not the case? Also how are you appending/adding/removing data?

The sheet, key and JSON are all correct- they have been the same for the two years. The issue at the moment is just creating/editing data rather than getting/requesting it (unless I’ve misunderstood how requestasync is used).

I have searched for any update log for the Google Sheets API and I haven’t found anything relevant to this issue. The code for adding data is in the screenshot above, if I were to overwrite/edit data I would use the same function. Data is only ever removed manually for security sake.

The macro script is found in the tutorial. Which I barely understand aha.

I use Google Sheets as a database, and this has started happening to me today as well.

1 Like

When on Google drive does your macro still appear under Tools -> Macros -> Manage Macros? Also, can you verify that still has permissions? While editing the macro in the script editor, go to Run -> Run Function -> setup. If it asks you for permissions again, the permissions where taken off for some reason. The final verification would be to copy your web app’s URL into your browser and see what google docs says. It should display your database.

(btw, I’ve found it well worth my time to setup an actual database. I feel like setting up a web server and database is a rewarding experience that helps developers prepare for their careers)

1 Like

Strange. Tools > Macros > Manage Macros is unavailable. If I visit the script editor page and go to Run > Run Function > setup it just runs without showing any permission level.

I’d love to make my own database but I really have no idea where to begin. I googled ways for the longest time and made no progress.

I think google banned roblox from sending data to google sheets, as it was probably abused by others, likely same reasons discord banned roblox.

3 Likes

Oh, my mistake, that manage macros menu option is just for recorded macros, not scripted ones and web apps. What happens if you put the URL you copied into the Roblox module into your browser? Does it also display a 405? From the script editor Publish -> Deploy as web app should list your current URL. If they banned Roblox’s servers, this will work.

There are a lot of options for setting up a database. When setting up your own database, you make the rules and can do whatever you want. You can use your own machine if you have a spare, or buy/rent a machine from a hosting service. You can use the Amazon cloud, the Google cloud, Microsoft’s cloud, or a more traditional hosting service like InMotion (who I currently use) or BlueHost. Most of the cloud services have free trial periods and are built to easily scale up if needed, so they are usually better in my opinion. Setting up a database for each cloud service is very different, so I won’t be able to help you out too much if you go down that route. I have used and like the amazon web services (AWS) cloud though. As for a more traditional host, they will likely give you a machine that is already setup with a webserver and database with an interface like CPanel. From there it is a matter of finding out how to create the tables in your database, and how to query it. It is also a very good idea to get a DNS address.

4 Likes

The issue seems to have been resolved in my game

2 Likes

The real issue here is that you’re relying on Google to store data for a production game. That’s a huge no-no.

If you’re going to store something important like player data, no matter how small your community is, do not use a free third-party service. If you don’t want to use data stores, cough up the money and host your own server to have the database in. You cannot rely on Google to store data.

I completely disagree. There are many third-party services out there that provide free database hosting, which are extremely useful for those who can’t afford/aren’t allowed to buy plans for databases. One of the most prominent ones being MongoDB. You get 500MB for free per database (which is a lot in data storing terms). I think it’s wrong to tell users to avoid free services purely because some provide a poor experience. Sure most aren’t viable, especially for storing large amounts of player data, however this doesn’t mean all free third-party services are bad.

I’m not saying the services are bad, just relying on them (the free ones) is bad. You never know if they will change something or maybe block Roblox requests or what. They’re simply unreliable to save important information like player data on.

I cannot recommend storing data at all on any service in a production game unless you’re paying for it.

And I get it, not everyone can afford that— I certainly can’t. But then you should just suck it up and use data stores. I’d rather deal with hiccups Roblox or I can address than have some random service break on me.