我已阅读此信息>> set format as plain text
我正在创建一个新线程,因为该线程已经存在了几年,而且几年前我也不想恢复某些东西。
代码:
function A1format() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var mainsheet = ss.getSheetByName("Sheet1");
var G = mainsheet.getRange("C15:BH3000").getGridId();
var illa = mainsheet.getRange("A13");
Logger.log(G);
illa.copyFormatToRange(G, 16, 3,200, 30);
}
此代码应为名为Sheet1
我已经尝试了var mainsheet = ss.getSheetByName("Sheet1, Sheet2, Sheet3");
,但这似乎不起作用,我只是收到一条错误消息。
这是我现有的代码,这段代码可以正常工作,但如果有些变化,它既低效又难以维护:
function setPlainTextDefault() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet1 = ss.getSheets()[0];
var sheet2 = ss.getSheets()[2];
var sheet3 = ss.getSheets()[4];
var sheet4 = ss.getSheets()[7];
var sheetColumn1 = sheet1.getRange("A1:A");
var sheetColumn2 = sheet2.getRange("A1:A");
var sheetColumn3 = sheet3.getRange("A1:A");
var sheetColumn4 = sheet4.getRange("A1:A");
sheetColumn1.setNumberFormat("@");
sheetColumn2.setNumberFormat("@");
sheetColumn3.setNumberFormat("@");
sheetColumn4.setNumberFormat("@");
}
这里我使用工作表的索引编号将每个工作表中的每个A列更改为纯文本,因此我必须手动计算每个工作表的编号,这是一个噩梦,因为我有非常多的工作表,我需要花费太多时间手动计算工作表,然后将其添加到我当前的代码中。我知道有更好的方法可以做到这一点,但我不知道由于我在谷歌应用程序脚本中缺乏知识。
无论有多少张纸,如何为文档中的每张纸都执行此操作?我想浏览每张纸,从sheet1到x张纸,然后将每列A更改为纯文本。
答案 0 :(得分:1)
var mainsheet = ss.getSheetByName("Sheet1, Sheet2, Sheet3")
会抛出错误,因为没有名为" Sheet1,Sheet2,Sheet3"的工作表。 "没有办法减少对代码的电子表格服务的调用,但你可以使它看起来更好"通过使用一些JavaScript功能,如循环和数组处理。
示例(未经测试)
在下面的代码片段中,数组,for和indexOf用于减少原始代码的行数。
function setPlainTextDefault() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets();
var sheetsToProcess = [0,2,4,7]; // Array holding the sheets indexes to process
for(var i = 0; i < sheets.length; i++){
/* If i is not in the sheetsToProccess indexOf returns -1 which is parsed as false
otherwise the result is parsed as true */
if(sheetsToProcess.indexOf(i)){
var sheet = ss.getSheets()[i];
var sheetColumn = sheet.getRange("A1:A");
sheetColumn.setNumberFormat("@");
}
}
}
要对每张工作表进行上述操作,请注释掉或删除if(sheetsToProcess.indexOf(i)){
以及相应的}
。
值得注意的是,如果您正在寻求帮助以找到最好的&#34;改进代码的方法,您可以尝试Code Review。
答案 1 :(得分:0)
这是我需要的代码:
function setPlainText() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets();
for(var i = 0; i < sheets.length; i++) {
//Logger.log(sheets[i].getName());
var setPlainText = ss.getSheets()[i];
var sheetColumnA = setPlainText.getRange("A1:A");
sheetColumnA.setNumberFormat("@");
var sheetColumnB = setPlainText.getRange("B1:B");
sheetColumnB.setNumberFormat("@");
}
}
它会: