[英]How to Print the names of the sheets and the Google ID
我试图打印一列中 Google 电子表格中所有工作表的名称,并在另一列中打印它们各自的 ID(URL 的一部分)。 到目前为止,这是我的脚本
function getSchedule() {
var ss=SpreadsheetApp.openById("Sheet_ID");
var sh=ss.getActiveSheet();
var allSheets=ss.getSheets();
var ids=[];
for(var i=0;i<allSheets.length;i++)
{
ids[allSheets[i].getName()]=allSheets[i].getSheetId();
}
var invoicess = SpreadsheetApp.getActiveSpreadsheet();
var schedule = invoicess.getSheetByName("Schedule");
schedule.getRange("A1:B").clear();
var headers = [["Sheet Name", "ID"]];
schedule.getRange("A1:B1").setValues(headers);
for(var d = 1; d=allSheets.length;d++){
schedule.getRange(d+1,1).setValue(allSheets[d]);}
}
所以我相信 allSheets 应该是所有工作表名称的数组,而 ids 是一个 ID 数组,但我认为应该打印 allSheets 数组值的最后一个 for 循环不打印任何内容。 我想让它从单元格A2
开始打印。 我还没有 ID 循环。 谁能告诉我为什么在单元格中什么也没有打印?
ids[allSheets[i].getName()]=allSheets[i].getSheetId();
setValues
而不是setValue
。setValues
在文件中添加标题,而您只需将其添加到将要附加数据的原始数组中即可。 您不需要 for 循环来使用setValues
。function getSchedule() {
const ss=SpreadsheetApp.openById("Sheet_ID");
const invoicess = SpreadsheetApp.getActiveSpreadsheet();
const schedule = invoicess.getSheetByName("Schedule");
const allSheets = ss.getSheets();
const ids = [["Sheet Name", "ID"]];
allSheets.forEach(sh=>{
ids.push([sh.getName(),sh.getSheetId()]);
});
schedule.getRange("A1:B").clear();
schedule.getRange(1,1,ids.length,ids[0].length).setValues(ids);
}
而不是这个ids[allSheets[i].getName()]=allSheets[i].getSheetId();
试试这个: ids.push([allSheets[i].getName(),allSheets[i].getSheetId()])
并在最后使用 setValues(ids) 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.