我正在尝试在一列中打印Google Spreadsheet中所有工作表的名称,并在另一列中打印它们各自的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循环不会打印任何内容。我想从cell开始打印A2
。我还没有ID的循环。谁能告诉我为什么细胞中什么也不打印?
ids[allSheets[i].getName()]=allSheets[i].getSheetId();
setValues
代替setValue
。setValues
在将标头添加到要在其中追加数据的原始数组中添加标头时使用。您不需要循环即可将值附加到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);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句