问题1。
我尝试编写一个脚本,根据其中一张表格中的表格重命名和重新排序Google电子表格中的工作表。我已经尝试了几个小时的不同方法让它工作无济于事。 (我仍然试图摆脱循环)
此脚本将放在一张表格中,我将与其他可能会意外重新排序或可能重命名表格的人分享。
我已经包含了当前代码和示例文件。
注意:工作表名称将完全不同,并且无法按字母顺序排序。
function OnOpen(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets();
for( var i in sheets )
if(sheets[i].getSheetId() == '978626951'){
var sheet = ss.getSheets()[i];
break;
}
var sheetData = sheet.getRange(2,1,11,3).getValues();
for (var a = 0; a < sheetData.length; a++) {
for (var b = 0; a < sheetData.length; b++){
var find = sheetData[a][0]; Logger.log(sheets[a].getSheetName());
if(find == sheets[a].getSheetId()) {
var temp = ss.getSheets()[a].activate();
ss.moveActiveSheet(sheetData[a][2]);
}
}
}
}
Link 使用脚本对电子表格进行示例。
问题2
根据W3schools,可以从循环内部增加循环。 (代码格式W3)
var i = 0;
var len = cars.length;
for (; i < len; ) {
text += cars[i] + "<br>";
i++;
}
然而,当我尝试在Google Script中执行此操作时,调试器会挂起,我必须刷新。这在谷歌脚本中是不可能的?
任何帮助都会有很大的帮助。
答案 0 :(得分:0)
我稍微修改了你的代码,它现在似乎有用了:
function onOpen(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets();
for( var i in sheets )
if(sheets[i].getSheetId() == '978626951'){
var sheet = sheets[i]; // reuse the var sheets
break;
}
//I USED COMMENTED CODE BELOW SINCE I NEEDED TO FIND THE SET OF SHEET IDS FOR MY TEST SPREADSHEET; SO ITS NOT REQUIRED TO RUN ONCE IDs ARE FOUND
//sheet.appendRow(['-'])
// for( var x in sheets)
// sheet.appendRow([sheets[x].getSheetId(), sheets[x].getSheetName() ] );
//
var sheetData = sheet.getRange(2,1,11,3).getValues();
for (var a = 0; a < sheetData.length; a++) {
var find = sheetData[a][0];
for(var b = 0 ; b < sheets.length; b++){
if(find == sheets[b].getSheetId() ) {
Logger.log(sheets[b].getName());
sheets[b].activate(); // not : ss.getSheets()[a]
ss.moveActiveSheet(sheetData[a][2]);
sheets[b].setName(sheetData[a][1]); // I added this rename bit
}
}
}
}
(但请注意,对我来说,我甚至还必须在打开工作表后刷新ss(即浏览器中的F5) - 看起来脚本会对电子表格进行更改,但它们不会显示在页面上直到我刷新)
我尝试了此电子表格中的代码:https://docs.google.com/spreadsheets/d/1W7IiEQgsHlWFm7EThyN3lcY6duKh9EW2sQDYFqbwID8/edit?usp=sharing
你的Q2: 这在Google Apps脚本中运行良好:
function myFunction() {
var cars = 'cars', text = '';
var i = 0;
var len = cars.length;
for (; i < len; ) {
text += cars[i] + "<br>";
i++;
}
Logger.log(text)
}