Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将每个工作表的列设置为纯文本格式?_Javascript_Optimization_Google Apps Script_Google Sheets - Fatal编程技术网

Javascript 如何将每个工作表的列设置为纯文本格式?

Javascript 如何将每个工作表的列设置为纯文本格式?,javascript,optimization,google-apps-script,google-sheets,Javascript,Optimization,Google Apps Script,Google Sheets,我已经通读了这篇文章>> 我正在创建一个新的线程,因为这个线程已经有几年的历史了,我不想从几年前恢复一些东西 守则: function A1format() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var mainsheet = ss.getSheetByName("Sheet1"); var G = mainsheet.getRange("C15:BH3000").getGridId(); var illa = mainshe

我已经通读了这篇文章>>

我正在创建一个新的线程,因为这个线程已经有几年的历史了,我不想从几年前恢复一些东西

守则:

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更改为纯文本。

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("@");
    }      
  }
}
函数setPlainTextDefault(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheets=ss.getSheets();
var sheetsToProcess=[0,2,4,7];//保存要处理的图纸索引的数组
对于(变量i=0;i
要使以上内容适用于每个工作表,请注释掉或删除
if(sheetsToProcess.indexOf(i)){
和相应的
}


值得注意的是,如果您正在寻找帮助以找到改进代码的“最佳”方法,您可以尝试。

这就是我需要的代码:

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("@");

   }
}
函数setPlainText(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheets=ss.getSheets();
对于(变量i=0;i
它将:

  • 以x张纸(无论大小)遍历文档
  • 然后,对于每个迭代,为文档中的每个工作表的每个列A和B设置纯文本格式

  • 谢谢你的指点,先生,我已经用你的示例代码回答了下面我自己的问题。