通过Google脚本检索最左侧工作表的名称

时间:2019-03-30 01:58:15

标签: google-apps-script

我正在创建一个脚本,以自动将数据添加到电子表格的第一张工作表/标签中。我需要通过script.google.com进行此操作,因为有各种电子表格,并且我希望将此代码保存在一个脚本中。另外,第一个标签的名称每周都会更改。

如果我知道工作表名称的使用范围,则可以将数据添加到单元格:“ Sheet1!A2”。但是,我想在不知道“ Sheet1”的情况下执行此操作。类似于newestSheet +“!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]”之外,还可以返回第一张工作表的名称吗?

1 个答案:

答案 0 :(得分:0)

创建新的电子表格并命名第一张电子表格

这是一个创建新电子表格并用“周:”命名第一张工作表的函数,其后是基于格式字符串“ 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")));
    } 
  }
}