如何在Google Apps Script中获取最左侧工作表名称(替代getSheets()[0])
获取第一个工作表名称以用于Sheets API批量更新
问题出在你用了SpreadsheetApp.getActiveSpreadsheet()——这个方法只会返回当前在浏览器中打开的电子表格,但你的需求是处理指定spreadsheetId的多个表格,所以自然无法正常工作。
要解决这个问题,你可以直接通过Sheets API来获取目标表格的第一个工作表名称,毕竟你已经在使用Sheets.Spreadsheets.Values.batchUpdate方法了,用同一个API体系更合理。
修改后的完整代码
function myFunction(){ updateGoogleSheet("My Sheet ID"); } function updateGoogleSheet(spreadsheetId) { // 只请求工作表的标题属性,减少数据传输量 var spreadsheetInfo = Sheets.Spreadsheets.get(spreadsheetId, { fields: "sheets(properties(title))" }); // 取第一个工作表的名称 var newestSheet = spreadsheetInfo.sheets[0].properties.title; var data = [ { range: `${newestSheet}!A2`, values: [ ["2"] ] }, ]; var resource = { valueInputOption: "USER_ENTERED", data: data }; Sheets.Spreadsheets.Values.batchUpdate(resource, spreadsheetId); }
关键说明
为什么不用SpreadsheetApp?
SpreadsheetApp.openById(spreadsheetId)其实也能实现,但既然你已经在使用Sheets API的批量更新方法,直接用Sheets API获取工作表信息可以避免切换不同的服务体系,逻辑更统一。而且如果你的脚本需要处理大量表格,API请求的效率也会更高。权限与API启用
确保你已经在脚本编辑器中启用了Google Sheets API:- 打开脚本编辑器,点击左侧菜单栏的「服务」
- 点击「添加服务」,找到「Google Sheets API」并添加
- 这样就能正常调用
Sheets.Spreadsheets.get方法了
fields参数的作用
我们在Sheets.Spreadsheets.get中指定了fields: "sheets(properties(title))",这意味着只请求工作表的标题属性,而不是整个表格的所有信息,能大幅减少返回的数据大小,提升请求速度。
内容的提问来源于stack exchange,提问作者user2078674
相关产品推荐
相关产品推荐

