【阿空】用Google試算表建立資料庫!?(連結Unity) →【GAS (Google Apps Script) - Spreadsheet】

Поделиться
HTML-код
  • Опубликовано: 7 фев 2025
  • 歡迎來到阿空的遊戲部屋づ(・ω・)づ
    -----
    透過Google試算表就可以建立簡單的資料庫!?
    讓雲端紀錄資料不再是夢想!
    快一起來看看吧!
    ↓ 完整的程式碼+註解 (๑•̀ㅂ•́)و✧在這裡 ↓
    github.com/emp...
    GAS(Google Apps Script) 網站 → ( developers.goo... )
    -----
    如果有任何錯誤、建議歡迎告訴我QuQ~
    喜歡的話可以點個喜歡,也可以訂閱個哦。
    如果有任何回饋、疑問可以留言,會盡量回覆哦~
    或是洽FB【阿空的遊戲部屋】粉絲團
    / remptygame
    謝謝大家(๑´ㅂ`๑)
    【訂個阿空傳送門】
    goo.gl/oFsBS4

Комментарии • 97

  • @RemptyGame
    @RemptyGame  4 года назад +5

    已經上傳囉!完整的程式碼+註解 (๑•̀ㅂ•́)و✧
    github.com/emptygamer/Unity-SpreadsheetDatabase-Tutorial

    • @rayhsu1214
      @rayhsu1214 4 года назад +1

      哈摟!我想詢問一些問題,有辦法將讀取試算表的值放進變數裡嗎,以純TEXT的方式
      因為我們是做LineBot 的回傳 我做好串接後沒有辦法回傳,因此我推測是變數值裡並不是試算表的值而是指令

    • @RemptyGame
      @RemptyGame  4 года назад +1

      @@rayhsu1214
      用 getValue (沒有s) 之後就是 JS 的基本資料型態了哦 (字串或數字)。
      var v = sheet.getRange(1,1).getValue();
      如果要強制轉型就用 toString 就可以了。
      v = v.toString();
      可以用 Logger 看,就知道型態是 string 了
      Logger.log(typeof(v));

  • @11305205219
    @11305205219 5 лет назад +2

    GOOGLE 試算表應用:ruclips.net/video/G4gaPTRv4vQ/видео.html

  • @wisag0d
    @wisag0d 4 года назад +3

    感謝教學。是說那個青軸聲真夠舒服響亮 XDDD

    • @RemptyGame
      @RemptyGame  4 года назад

      感謝支持~
      真的XD,好的青軸可以演奏出好的的樂曲(「・ω・)「

  • @chousw9487
    @chousw9487 4 года назад +3

    我也正在研究用unity和gas連結線上資料庫,也遇到和您一樣在影片結尾時類似的問題。
    這是我的其中一個if判斷式:
    if (parameter.method == "SerialNumber")
    {
    var aaa = Number(sheet.getRange(2,5).getValue());
    aaa = aaa+1;
    sheet.getRange(2,5).setValue(aaa);

    return ContentService.createTextOutput(sheet.getRange(2,5).getValue());
    }
    經過自己測試後是行得通的,但是如果把我的unity匯出成apk後安裝在多個裝置上,同時(或秒數很接近時)快速呼叫線上腳本的這個判斷式,會導致aaa=aaa+1有時候出現漏加的狀況,進而導致傳回不同裝置的數值卻是相同的(我要的效果是發號碼牌的概念)。
    我上網找到有getScriptLock()的用法,可以鎖定gas的線上腳本,不讓多人同時進行某段函式,不過我一直嘗試,仍然是找不到套用進自己的if判斷式的方法...(不知道這幾行鎖的語法要放在哪個位置)。
    希望您可以幫我解答看看 謝謝您!

    • @RemptyGame
      @RemptyGame  4 года назад

      用 getScriptLock 是可以的哦,在程式要執行之前先加上 lock,如果超過 lock 的等待時間就會返回 busy 。
      var lock = LockService.getScriptLock();
      try{
      lock.waitLock(10000);
      }catch(e){
      return ContentService.createTextOutput("busy")
      }
      // 程式碼
      lock.releaseLock()
      如果是程式碼的最尾端,不釋放 lock 也是可以的。
      這樣就可以確保執行了哦。

  • @riveranb
    @riveranb 5 лет назад +3

    太神啦

  • @zx-ql2le
    @zx-ql2le 5 лет назад +2

    加油

  • @mark761222
    @mark761222 4 года назад +3

    請問一下可以教學一下LINE 機器人跟google試算表 相關教學嗎?
    例如:
    舉例1
    LINE裡面打一些文字 日期-支出-晚餐-100
    試算表就會新增內容
    機器人就會公告,資料已新增成功
    舉例2
    輸入關鍵字 6/1~6/10
    查詢6/1~6/10總共支出記錄
    6/10 支出-晚餐-100
    6/11 支出-早上-60

    • @RemptyGame
      @RemptyGame  4 года назад

      可能要去看一下Line機器人發的訊息哦,訊息解析完之後的操作基本上會跟影片中的差不多。

  • @Kobayashicc
    @Kobayashicc 3 года назад +3

    HI,您好,謝謝您這麼詳細的教學。
    另外,請教一下,影片中所述在UNITY將程序碼編輯完成後、也測試OK,是否可以匯成編譯成EXE或VBA檔,可以直接在沒有安裝UNITY電腦中執行呢?

    • @RemptyGame
      @RemptyGame  3 года назад +3

      就直接把做好的Unity專案Build到你要的平台就可以囉。
      docs.unity3d.com/Manual/PublishingBuilds.html

  • @555DD668
    @555DD668 2 года назад +1

    老師你好
    想請問一個問題,我用app inventor 撰寫app,抓取google sheet的資料,我想要同一個sheet同時能抓取資料及上傳更新資料,請問該如何用google app script 做到?並且要是在同一個儲存格(例:我抓取A1的資料,同時在滿足條件時,更新資料到同一個sheet的A1),我有在國外論壇爬過文,不過那個不完全是我要的,因為那是每一筆新增的資料會新增在下方的空行,讓我很傷腦筋

    • @RemptyGame
      @RemptyGame  2 года назад

      如果是 GAS 的話,就直接取該 cell 的值,檢查你傳輸的資料是不是相同,是的話就更新每一格的資料就可以了哦。

  • @younglee250
    @younglee250 3 года назад +1

    可以跟您請教問題嗎? 在GOOGLE 試算表中 我否可將 試算表A 的某些欄位資訊 與 試算表B 的某些欄位資訊 灌到 試算表C 的某些欄位輸出

    • @RemptyGame
      @RemptyGame  3 года назад

      可以哦,可以用 ID 開啟多個試算表,
      在試算表內選擇 sheet、getRange、再把數值填去其他表格就可以了。

  • @阿棋-l7o
    @阿棋-l7o Год назад +1

    不好意思我想請問一下 若我在unity做了一個UI介面 裡面有放姓名的填寫 還有年齡跟性別的下拉式選單
    那有辦法說 當使用者按下選單跟填寫姓名後 我這邊試算表也會同時接收到他所填寫的內容嗎?

    • @RemptyGame
      @RemptyGame  Год назад +1

      要看你何時發送,試算表才會收到哦。
      如果想要同步,那就要在每次輸入變更就要發送,但每次同步都會消耗發送次數。
      建議可以搭配本地端保存,等使用者發送才送到試算表。

    • @阿棋-l7o
      @阿棋-l7o Год назад

      好的 十分感謝~@@RemptyGame

  • @arrylow6661
    @arrylow6661 4 года назад +1

    目前正在嘗試接觸製作遊戲,想要通過EX做成績的榜單,但是不知道為什麼遇到這問題。
    Assets\Web.cs(31,16): error CS0246: The type or namespace name 'UnityWebRequest' could not be found (are you missing a using directive or an assembly reference?)
    Assets\Web.cs(31,38): error CS0103: The name 'UnityWebRequest' does not exist in the current context
    我有去國外的論壇看一下,好像也有遇到類似的問題,請問這是版本的問題嗎?有沒有其他的代替方案?

    • @RemptyGame
      @RemptyGame  4 года назад

      可能就跟你看到的一樣,好像沒有特定的問題導致這個原因 (汗。
      可以試著重新安裝或更換版本看看,不然就是要使用原生 C# 的功能去發 request 了。

  • @ellyshen7028
    @ellyshen7028 3 года назад +1

    請問一下,如果要使用試算表自動登記雲端資料夾裡面的圖片該如何下語法呢?
    使用情境:
    小花上傳z圖片至雲端y資料夾,此時登記試算表的小花欄位的登記列自動出現v符號

    • @RemptyGame
      @RemptyGame  3 года назад +1

      可以用 DriveApp.getFolderById("資料夾ID"),然後再透過 folder 物件的 getFilesByName 或 getFiles+迴圈去找檔案,再用檔案的 getOwner 去找這個物件的擁有者,然後再去更新試算表。
      另外 GAS 目前好像沒有 GoogleDrive 的觸發機制(゚´ω`゚)゚,所以可能要每次都去執行更新,如果要即時的話可能就要另外建個伺服器去監控之類的。

  • @MarioMao
    @MarioMao 3 года назад +1

    拿GAS當投票機適合嗎?傳要投的號碼當id,傳到GAS先用id當raw讀取目前的票數,加1,再set蓋回去

    • @RemptyGame
      @RemptyGame  3 года назад

      當簡易版的投票機當然可以哦。
      只是不是特別完善,要處理像是重複投票或是辨識投票者之類的問題,就會繞比較遠。

  • @kken8766
    @kken8766 3 года назад +1

    有沒有辨法解決 接口是公開的這個問題? 如加入驗證之類的。。。

    • @RemptyGame
      @RemptyGame  3 года назад +1

      部屬之後就是公開的哦,簡易的做法可以在呼叫的時候傳入一些驗證碼之類的去做驗證再執行。如果要更進階的驗證系統的話可能就要用GCP之類的服務了。

    • @kken8766
      @kken8766 3 года назад +1

      @@RemptyGame 呼叫的時候傳入一些驗證碼 只能對應 App和SpreadSheet中的傳輸,但問題是 在 11:04 那段早己設定成了任何人都可以改寫。我在其它Hacker頻道上看到過,那些Hacker很輕鬆就能拆開App裏拿到App 裏的 這類 Link的。。。所以若是公開接口。。。基本上等如叫讓人隨便亂改 XDD。

    • @RemptyGame
      @RemptyGame  3 года назад

      @@kken8766 這個是針對於沒有伺服器資源的人的一個替代方案哦(汗,所以他只是代理你去寫入雲端的試算表。
      接口基本上都是公開的哦,只是因為他是serverless,所以比較難動態去做異常數值偵測、資料的加解密、派送token等等的驗證工作。

  • @z520842z
    @z520842z 5 лет назад +2

    謝謝你的教學,請問一下,我在輸入程式碼的時候 API 都不會自己跳出來 QQ,是有什麼東西需要做設定嗎?

    • @RemptyGame
      @RemptyGame  5 лет назад +1

      哈囉,不用額外設定哦~
      只是這個編輯器不會顯示所有可以使用的物件,要選擇特定物件之後才會跑出該物件的 Function 或 變數 。
      像是 SpreadSheetApp 這個物件是不會被快捷顯示出來的,要把物件名稱打完整之後,才會出現 SpreadSheetApp 這個物件底下的 Function 與 變數。
      是這個編輯器比較不好使的一個小缺點 QuQ。

  • @porhuat
    @porhuat 3 года назад +1

    請問一下要如何在unity 判斷要上傳sheet 1 還是 sheet 2 呢?

    • @RemptyGame
      @RemptyGame  3 года назад

      可以在 GAS 端開一個參數,分別處理不同的 sheet,然後 Unity 呼叫時就可以透過這個參數去觸發不同的 sheet。

  • @BingrunJiang
    @BingrunJiang 5 лет назад +1

    謝謝你,教學很清楚易懂,可以請問一下,我想利用這個方式來建立在地化的翻譯表,但如果想要在某幾個條目間插入新的條目,而不破壞已在表上的內容,純粹更新,請問會怎樣處理這樣的情況呢? 感謝~

    • @RemptyGame
      @RemptyGame  5 лет назад +1

      哈囉,如果是要在列表當中插入新的行或列的話,可以使用 sheet.insertRows 或 insertColumns來做哦~

    • @BingrunJiang
      @BingrunJiang 5 лет назад +1

      @@RemptyGame 喔喔好的我來試試看,非常感謝!!

  • @quill4749
    @quill4749 4 года назад +1

    感謝教學!! 請問google試算表可以多人同時存取嗎?大概30人

    • @RemptyGame
      @RemptyGame  4 года назад

      如果是用 web API 操作的方式,是不能同時執行的哦,會依照請求順序來執行。

    • @quill4749
      @quill4749 4 года назад

      @@RemptyGame 謝謝你的解答~請問是指一次只能存取一位玩家的資料的意思嗎?

    • @RemptyGame
      @RemptyGame  4 года назад

      @@quill4749 是指這個接口 (GAS) 一次只能處理一個 request,所以當兩個訊息同時發給 GAS 服務的時候,還是會一個一個執行,不能同步存取。
      要說一次只能存取一個,也可以這麼說啦XD"

    • @quill4749
      @quill4749 4 года назад

      @@RemptyGame 哦哦了解!是不是如果兩個人同時玩的時候,資料只能一筆一筆寫進去,如果同時寫入就會發生錯誤?

    • @RemptyGame
      @RemptyGame  4 года назад

      @@quill4749 同時 request google 貌似會處理的樣子,但是就不能確保執行順序。

  • @wslls
    @wslls 4 года назад +1

    老師請教您,SCRIPT寫好後,跟當下開的SHEET有關連性嗎? 列如我要讓別的SHEET也執行同支 SCRIPT。

    • @RemptyGame
      @RemptyGame  4 года назад +1

      如果是從 sheet 頁面點擊程式碼來撰寫的話就會有關聯,如果要沒有跟任何檔案關聯的 Apps Script 可以在雲端硬碟按右鍵新增 App Script 檔案。
      可以使用 SheetApp 的 openById 用特定ID就可以關連到別的檔案了哦。

    • @wslls
      @wslls 4 года назад +1

      謝謝,瞭解了

  • @nephidog
    @nephidog 4 года назад +1

    想請較你影片中打前面的自下方就會有選單跳出來給你選要怎麼開啟輔助輸入功能壓?

    • @RemptyGame
      @RemptyGame  4 года назад

      Unity的部分嗎?

    • @nephidog
      @nephidog 4 года назад +1

      @@RemptyGame 在GAS中打程式碼的時候,4:08的時候那種

    • @RemptyGame
      @RemptyGame  4 года назад

      @@nephidog 會自動出現哦。
      如果搜尋到變數的物件類別的話才會出現。

    • @nephidog
      @nephidog 4 года назад +1

      @@RemptyGame 可是我照影片輸入的時候沒有出現耶~傷心~還是瀏覽器的問題??

    • @RemptyGame
      @RemptyGame  4 года назад

      @@nephidog 是使用chrome嗎?還是其他瀏覽器?
      沒測過其他瀏覽器會不會有這樣的問題。(汗

  • @ericchu4364
    @ericchu4364 4 года назад

    和html程式連結時,為甚麼只是輸入了變數"name"?
    function write_data(para) {
    var name = para.name;
    var pass = para.password;
    sheet1.appendRow([name, pass]); //add data
    }

    • @RemptyGame
      @RemptyGame  4 года назад

      可以檢查看看傳輸的時候是不是有正常傳入 password 的資料。

    • @ericchu4364
      @ericchu4364 4 года назад

      @@RemptyGame謝謝
      使用了值"123"
      但只顯示了變數name

    • @RemptyGame
      @RemptyGame  4 года назад

      @@ericchu4364 是檢查一下更上一層對於 Post 的處理,或是 Unity Form 的資料哦。

    • @ericchu4364
      @ericchu4364 4 года назад +1

      @@RemptyGame 謝謝

  • @roychen1102
    @roychen1102 4 года назад +1

    他這個return資料可以一次回傳好幾筆嗎(read) 還是要重複呼叫?

    • @RemptyGame
      @RemptyGame  4 года назад +1

      可以哦,
      可以在GAS的時候把要回傳的多筆資料封裝成 Dictionary 或 List,然後 unity 收到字串後再進行切割或透過 JSON 轉換成物件資料。

    • @roychen1102
      @roychen1102 4 года назад +1

      ​@@RemptyGame 都忘記可以切割了XD 第一次做回傳 看到回覆才想起可以先串成字串再切割

  • @totmomo1452
    @totmomo1452 5 лет назад +2

    不好意思~我在uniyt post的時候 因為https的緣故,導致401的問題,因為看您的影片沒有發生此問題,想詢問一下為什麼QQ

    • @RemptyGame
      @RemptyGame  5 лет назад

      可以檢查看看在部屬的時候是不是有設定成任何人甚至匿名也可以執行,然後將應用程式執行為自己。
      然後最好還是要設定一些過濾機制 (資料加密或傳入密鑰資料),避免其他人直接透過 url 執行你的 GAS 程式 (QuQ。

    • @lolivk
      @lolivk 3 года назад

      @@RemptyGame Goolgle 安全性改版了 HTTP/1.1 401 Unauthorized 無解了

  • @弓長傑欣
    @弓長傑欣 5 лет назад +1

    我想請問一下GAS是否能像VBA一樣創建一個輸入面版來手動新增資料呢?

    • @RemptyGame
      @RemptyGame  5 лет назад

      可以哦 ,可以用 GAS 撰寫 GoogleSheet 的插件,就可以透過自訂義的 UI 面板來調用功能。
      也可以輸出跟部屬 API,就可以在本地端自建應用程式然後再透過 API 呼叫來調用哦。

  • @ByJin-eo2hc
    @ByJin-eo2hc 5 лет назад +1

    你好,可以从表格连接到电脑桌面的文件夹么 ?

    • @RemptyGame
      @RemptyGame  5 лет назад +1

      連接是指直接操作桌面的檔案嗎?

  • @carlozpro
    @carlozpro 4 года назад +1

    不太行,可以給原始碼嗎?(第一步) 4:07

    • @RemptyGame
      @RemptyGame  4 года назад +1

      完整的程式碼+註解,上傳囉!(๑•̀ㅂ•́)و✧
      github.com/emptygamer/Unity-SpreadsheetDatabase-Tutorial

    • @carlozpro
      @carlozpro 4 года назад +1

      @@RemptyGame 謝謝你(・∀・)(つ≧▽≦)つ

    • @carlozpro
      @carlozpro 4 года назад

      @@RemptyGame parameter 有error

    • @RemptyGame
      @RemptyGame  4 года назад +1

      @@carlozpro 可以檢查一下傳輸的 parameter 數值是不是有缺哦,如果 GAS 有使用到某個 parameter 數值,而呼叫 API 沒有傳送的話就會出錯。

    • @carlozpro
      @carlozpro 4 года назад

      @@RemptyGame thanks

  • @wangpatrick9786
    @wangpatrick9786 4 года назад +1

    阿空大大,為甚麼會說我的parameter未宣告啊?
    我都已經有打var parameter = e.parameter了QQ

    • @RemptyGame
      @RemptyGame  4 года назад +1

      是在 doGet、doPost 的 function 裡面嗎?
      透過Get、Post傳輸訊息的時候才會有這個參數哦。

    • @wangpatrick9786
      @wangpatrick9786 4 года назад

      @@RemptyGame 是的空大,我放在doPost function裡面

    • @RemptyGame
      @RemptyGame  4 года назад +2

      @@wangpatrick9786 那可能需要貼一下程式碼才能確認問題出在哪哦QuQ"

  • @lolivk
    @lolivk 3 года назад

    Goolgle 安全性改版了 HTTP/1.1 401 Unauthorized 無解了?

    • @RemptyGame
      @RemptyGame  3 года назад

      可以檢查一下你的呼叫帳戶要設成自己,然後允許匿名執行。

    • @lolivk
      @lolivk 3 года назад

      @@RemptyGame Google好像安全性改版了,選項沒了

    • @RemptyGame
      @RemptyGame  3 года назад

      @@lolivk 有哦,點"部屬"進去可以調整了。

    • @lolivk
      @lolivk 3 года назад +1

      @@RemptyGame 那就奇怪了...我也是點部署啊,那個存取權只有兩個選項(只有我、所有有的登入的Google帳戶...) 我再看看新版跟舊版編輯器也沒有差別好了,感謝

  • @陳義芳-e7c
    @陳義芳-e7c 5 лет назад +1

    (O)執行 (x)運行
    (O)示範 (x)演示
    影片不錯,可惜變成中國人了⋯⋯

    • @henrychang2725
      @henrychang2725 5 лет назад +1

      硬是要別人自我審查也很像中國人的行為

    • @陳義芳-e7c
      @陳義芳-e7c 5 лет назад

      Henry Chang 完全沒有硬要別人自我審查啊?您的理解能力是不是不太好⋯

    • @henrychang2725
      @henrychang2725 5 лет назад

      對不起 對不起 是我理解力不好
      那我換個說法:
      『在別人文章裡找出一兩個單字來做解讀,
      然後叩他帽子 貼他標籤,
      這樣很像台灣人。』
      不知道這樣理解對不對

    • @frankiejou
      @frankiejou 5 лет назад

      沒有敵我意識的鬼島居民

    • @henrychang2725
      @henrychang2725 5 лет назад

      @@frankiejou 哎呀 是不是在說我啊?