是否可以将 Supabase 与 Google Apps 脚本 (GAS) 一起使用?
我是 Supabase 的新手,之前从未尝试过将外部库导入到 GAS 中。我计划使用 Supabase 作为我的 GAS 项目的数据库。该项目旨在在聊天平台而不是用户界面中运行机器人。根据 Supabase 的文档,看起来它是通过执行 Supabase 库中的函数来工作的。
我尝试通过从here复制粘贴整个库或使用
eval()
来使用Supabase库,但它们都返回错误:ReferenceError: self is not defined
。
这是我运行的函数,使用
eval()
:
function myFunction(){
var x = eval(UrlFetchApp.fetch("https://unpkg.com/@supabase/supabase-js").getContentText())
var supabase = createClient(supabaseUrl,supabaseKey)
}
createClient()
应该是 Supabase 库中的一个函数。
我能想到的实现这项工作的一个可能途径是使用 Postgrest,它是 Supabase 用户的底层 API 服务器。
由于每个 Supabase 实例都可以使用 Postgrest 提供的 REST API 进行访问,因此您应该能够从 GAS 项目对 Supabase 数据库执行插入、更新、删除和读取操作。
您可能可以运行类似的命令来访问 Supabase。
$anonKey = "YOUR_SUPABASE_ANON_KEY_HERE"
$url = "YOUR_SUPABASE_URL_HERE"
$var options = {
"async": true,
"crossDomain": true,
"method" : "GET",
"headers" : {
"Authorization" : "Bearer " + $anonKey,
"apikey": $anonKey
}
};
var response = UrlFetchApp.fetch($url + "YOUR_QUERY_PARAMETER_FOR_POSTGREST", options);
我构建了一个简单的 Supabase 类来从 Google Apps 脚本访问 Supabase 数据库。
在 Apps 脚本编辑器中从此处复制 Supabase 类。
您可以像这样与数据库交互:
function testSupabaseClass() {
const key = 'your-anon-or-service-key'
const url = 'your-supabase-database-url'
const supabase = new Supabase(url, key)
const tableName = 'your-table-name' // create it in supabase, make sure you have access with the key
console.log('getRows', supabase.getRows(tableName))
console.log('getRows with filter', supabase.getRows(tableName, 'id=eq.1'))
console.log('insertRows', supabase.insertRows(tableName, [{ merchant: 'Aldi', amount: 24.23, category: 'groceries' }]))
console.log('updateRow', supabase.updateRow(tableName, 'id=eq.2', { 'merchant': 'Adidas' }))
console.log('deleteRows', supabase.deleteRows(tableName, 'merchant=eq.Aldi'))
}