[英]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.