Have Any way to send DataStore table to Google Drive as Json file? (like a backup)

Iam making a DataStore backup system, i Want send the Data to Google Drive When player leave and fail to save the Data, so when player Join i Will try get the file on Google Drive, If return Any error (like file not found), is because dont have Any backup, so player Will Join normal, i tried found any api, or tutorial or code example, but i couldnt found, please helpme.

Also here is my DataStore code.

   -- services
local Players = game:GetService("Players")
local Version = 1
local DataService = game:GetService("DataStoreService")
local PlayerData = DataService:GetDataStore("SimPowerStore_"..Version)
local MaxAttempts = 3 
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local RemoteEvents = ReplicatedStorage.RemoteEvents
local StartTraining = RemoteEvents.Training
local StopTraining = RemoteEvents.StopTraining

-- variables
local ServerData = {}
local Saving = nil

local function DataRetry(DataFunction,...)
       local Tries = 0
       local Data = nil
       local Success,Message = false,nil
       local Args = {...}
       while Tries < MaxAttempts and not Success do
           Tries = Tries + 1
           Success,Message = pcall(function() Data = DataFunction(unpack(Args)) end)
           if not Success then wait(1) warn("DataRetry Failed:",Message) end
       end
       
       if not Success then
          warn("Data not found")
       else
          print("Data Found")
       end
         
       return Data
   end


local function newData()
   return {
       ["Stats"] = {
          ["Strength"] = {
   	      ["Value"] = 0;
   	      ["Suffix"] = "";
   	      ["Multiplier"] = 0;
   	      ["Boost"] = 0;
          };
          ["Endurance"] = {
   	      ["Value"] = 0;
   	      ["Suffix"] = "";
   	      ["Multiplier"] = 0;
   	      ["Boost"] = 0;
          };
          ["Mind"] = {
   	      ["Value"] = 0;
   	      ["Suffix"] = "";
   	      ["Multiplier"] = 0;
   	      ["Boost"] = 0;
          };
          ["Jump"] = {
   	      ["Value"] = 0;
   	      ["Suffix"] = "";
   	      ["Multiplier"] = 0;
   	      ["Boost"] = 0;
          };	
          ["Speed"] = {
   	      ["Value"] = 0;
   	      ["Suffix"] = "";
   	      ["Multiplier"] = 0;
   	      ["Boost"] = 0;
   	   }    
       };
       ["Leard"] = {
             ["Reputation"] = 0;
             ["Rank"] = "Innocent";
       };
       ["Missions"] = {
       
       };
       ["Skills"] = {
   
       };
        
   }
end

local function Get(p)
   local Data = PlayerData:GetAsync("PlayerUserId_"..p.UserId)
   return Data
end

local function loadData(p)
   local data
   local Success,Error = pcall(function()
       data = DataRetry(Get,p) 
   end)
    
   if Success then
   	if not data then
         data = newData()
         print("Generating new data")
   	end
   else
   	p:Kick("Data not found pls Rejoin")
   end
    
   ServerData[p.UserId] = data
end

local function teste(p)
   ServerData[p.UserId]["Leard"]["Reputation"] = 30
   print(ServerData[p.UserId]["Leard"]["Reputation"])
end 

local function saveData(p,SaveType)
   
       if ServerData[p.UserId] then
           local Success, Error = pcall(function() 
              PlayerData:UpdateAsync("PlayerUserId_"..p.UserId, function(oldData)
   	          return ServerData[p.UserId]
              end) 
   
           end)
       
           if Success then
               warn(p.Name.." Data saved ")
           else
               warn("Data wasn't saved for "..p.Name.." error "..Error)
           end

           if SaveType == "AutoSave" then
   
           else
           ServerData[p.UserId] = nil
           end
       end


           
end

local function loadLeardStats(p)
   local folder = Instance.new("Folder")
   
   local rank = Instance.new("NumberValue")
   rank.Name = "Rank"
   rank.Value = ServerData[p.UserId]["Leard"]["Rank"]
   rank.Parent = folder
   
   local reputation = Instance.new("NumberValue")
   reputation.Name = "Reputation"
   reputation.Value = ServerData[p.UserId]["Leard"]["Reputation"]
   reputation.Parent = folder
   
   folder.Name = "leaderstats"
   folder.Parent = p
end

--Training Events


local AutoTraining = {}

local function increaseStats(Player,Amount,Stat)
   while true do
   	wait(1)
   	if not AutoTraining[Player.UserId] then return end 
   	
   	ServerData[Player.UserId]["Stats"][""..Stat]["Value"] = ServerData[Player.UserId]["Stats"][""..Stat]["Value"] + 50
   	print(ServerData[Player.UserId]["Stats"][""..Stat]["Value"])
   end
end

local function checkIsTrainingArea(Player,Amount,Part,Stat)
    print("checkingg")
    local touching = Part:GetTouchingParts()
    local ValidPosition = false
    for i=1,#touching do
   	if touching[i] == Player.Character.HumanoidRootPart then
   		ValidPosition = true
   		break
   	end
   end  
   
   if ValidPosition == true then
   	AutoTraining[Player.UserId] = true
   	increaseStats(Player,Amount,Stat)
   end  
   ValidPosition = nil
   touching = nil
end

local function stopTrainingF(Player,Part)
   local touching = Part:GetTouchingParts()
    local ValidPosition = false
    for i=1,#touching do
   	if touching[i] == Player.HumanoidRootPart then
   		ValidPosition = true
   		break
   	end
   end
   
   if ValidPosition == true then
   	AutoTraining[Player.UserId] = false
   end
   ValidPosition = nil
   touching = nil
end

Players.PlayerAdded:connect(function(p)
   loadData(p)
   loadLeardStats(p)
   teste(p)
   StartTraining.OnServerEvent:Connect(checkIsTrainingArea)
     
   
end)

game:BindToClose(function()	
   Saving = true
   print("Closing")
   for _,p in pairs(Players:GetChildren()) do
        DataRetry(saveData,p,"LeaveSave")
   end
   
end)

Players.PlayerRemoving:connect(function(p)
   if Saving == false then
      DataRetry(saveData,p,"LeaveSave")
      Saving = nil
   end
   
end)

while true do
   wait(180)
   if not Saving then
   	for _,p in pairs(Players:GetChildren()) do
        DataRetry(saveData,p,"AutoSave")
      end
   end
end

Here’s a tutorial for google sheets. But you could write a nodejs web app if you wanted