首页 > 解决方案 > 通过谷歌脚本检索最左边工作表的名称

问题描述

我正在创建一个脚本来自动将数据添加到电子表格的第一个工作表/选项卡。我需要通过 script.google.com 执行此操作,因为有各种电子表格,我想将此代码保存在单个脚本中。此外,第一个选项卡的名称每周都会更改。

如果我知道使用范围的工作表名称,我可以将数据添加到单元格:“Sheet1!A2”。但是我想在不知道“Sheet1”的情况下执行此操作。像 latestSheet+"!A2" 这样的东西。

function myFunction(){
 updateGoogleSheet("My Sheet ID");
}

function updateGoogleSheet(spreadsheetId) {
 var newestSheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0].getName();

 var data = [
   {  
     range: newestSheet+"!A2",   // Update single cell
     values: [
       ["2"]
     ]
   },
 ];

 var resource = {
   valueInputOption: "USER_ENTERED",
   data: data
 };

 Sheets.Spreadsheets.Values.batchUpdate(resource, spreadsheetId);
} 

SpreadsheetApp 不适用于 script.google.com。是否有“getSheets()[0]”的替代方法来返回第一张工作表的名称?

标签: google-apps-script

解决方案


创建一个新的电子表格并命名第一个工作表

这是一个创建新电子表格并将其中的第一张工作表命名为“Week:”的函数,后跟基于格式字符串“ww”的周数。

目前,它使用提示来获取文件夹 ID 和电子表格名称。您可能希望将其更改为更精确地满足您需求的内容。

不要忘记启用 Drive API V2。

function createSpreadsheetInFolder(){
  var ss=SpreadsheetApp.getActive();
  var ui=SpreadsheetApp.getUi();
  var resp1=ui.prompt('Parent Folder Id','Enter Parent Folder Id', ui.ButtonSet.OK_CANCEL);
  if(resp1.getSelectedButton()==ui.Button.OK && resp1.getResponseText()){
    var parentFolderId=resp1.getResponseText();
    var pfObj=Drive.Files.get(parentFolderId);
    var pfName=pfObj.title;
    var pfType=pfObj.mimeType;
    var pfId=pfObj.id;
    var resp2=ui.prompt('File Name', 'Enter File Name', ui.ButtonSet.OK_CANCEL);
    if(resp2.getSelectedButton()==ui.Button.OK && resp2.getResponseText()){
      var fileName=resp2.getResponseText();
      var res={
        "mimeType":"application/vnd.google-apps.spreadsheet" ,
        "title":fileName, 
        "ownedByMe": true,
        "parents":[{"id":parentFolderId}] 
      };
      try{
        var file=Drive.Files.insert(res);
      }
      catch(e){
        ui.alert(e);
      }
      var ss=SpreadsheetApp.openById(file.id);
      var sh=ss.getSheets()[0].setName(Utilities.formatString('Week: %s', Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "ww")));
    } 
  }
}

推荐阅读