Google Apps Script调用Firebase API出现语法错误求助
排查Google Sheets Apps Script调用Firebase API的语法错误
你遇到的语法问题主要来自两个和Apps Script语法规范相关的细节,毕竟它基于ES5标准,和一些现代编程语言的写法有差异:
1. 函数声明缺少function关键字
在Apps Script中,独立函数的声明必须使用function关键字,你写的loadInformation()是ES6类方法或箭头函数的写法,在这里并不适用。需要把函数声明改成:
function loadInformation() { // 函数内容... }
2. 代码块括号不匹配(第20行错误的根源)
看你的代码结构,for循环结束后的}已经关闭了if (firebaseService.hasAccess())的代码块,但你紧接着又写了一个} else {——这个额外的}没有对应的起始{,直接导致了语法解析失败。
修正后的完整代码
function loadInformation(){ //Set up service and check access var firebaseService = getFirebaseService(); if (firebaseService.hasAccess()) { //Set up google sheet and header row var ss = SpreadsheetApp.getActiveSpreadsheet(); var Sheet = ss.getSheetByName("<YOUR SHEETNAME>"); Sheet.clearContents(); Sheet.appendRow([<YOUR SHEET HEADERS>]); // 记得替换成实际表头数组,比如["ID", "Content"] //Set up reference var databaseURL = "https://xxxxxx.firebaseio.com/"; var ref = "xxxxxx"; var requestURL = databaseURL+ref+".json"; //API Call var response = UrlFetchApp.fetch(requestURL, { headers: { Authorization: 'Bearer ' + firebaseService.getAccessToken() }, method: 'get' }); //Parse JSON var data = JSON.parse(response.getContentText()); //Loop through JSON and append row for (item in data){ var newRow = [item]; // 去掉末尾多余的逗号,避免数组出现undefined元素 Sheet.appendRow(newRow); } } else { // 这里直接衔接else,删除了之前多余的} //Show authorization URL to user var authorizationUrl = firebaseService.getAuthorizationUrl(); showDialog(authorizationUrl); } }
额外小提示
- 代码里的
Sheet.appendRow([<YOUR SHEET HEADERS>])需要替换成实际的表头数组,比如["Item ID", "Description"],否则会引发后续运行错误。 var newRow = [item,];里的末尾逗号可以去掉,虽然JS允许这种写法,但可能会导致数组出现多余的undefined元素,影响表格内容展示。
内容的提问来源于stack exchange,提问作者Asela Wijesinghe
相关产品推荐
相关产品推荐

