google-apps-script - 通过谷歌脚本检索最左边工作表的名称
问题描述
我正在创建一个脚本来自动将数据添加到电子表格的第一个工作表/选项卡。我需要通过 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]”的替代方法来返回第一张工作表的名称?
解决方案
创建一个新的电子表格并命名第一个工作表
这是一个创建新电子表格并将其中的第一张工作表命名为“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")));
}
}
}
推荐阅读
- c++ - 在 mac 命令行开发人员工具中找不到执行头 C++
- sed - 使用 sed 更新 json - Docker 容器
- android - Cordova Android 不发送 AJAX 请求
- python - 寻找第 n 个回文素数 - 我哪里做错了?
- objective-c - Objective-C 类属性类型未暴露给 Swift
- javascript - 在 ReactJs 中将状态从一个组件传递到另一个组件
- streaming - 如何部署将文件加载到内存中的 Google 数据流工作者?
- java - 如何从 REST API 响应创建 ArrayList 对象的 pojo 类?
- python - 如何在 python google TTS 中获得问题音?
- logstash - 如何在logstash中检查文档是否存在