0

我已经编写了将格式更改12.4/12/12.0312:40:00/12:00:00/12:03:00 以下代码的脚本:

function myFunction() {
  var sheet=SpreadsheetApp.getActiveSheet();
  var rows= sheet.getDataRange();
  var numRows=rows.getNumRows();
  var values=rows.getValues()
  var column = [];
  var p = 0;
  var k = "H";

   for (var i=0;i<numRows;i++) {

    // var cell = 
    //Split the string a the .
  var  string = values[i][7].split(".");

     string[0] = string[0].toString();
     p = i+1;
     k = "H"+p;
     var cell = sheet.getRange(k);
     if(string[1]){
       string[1] = string[1].toString(); 
    // if the second part is like 4 in 12.4 you set it to 40

     if(string[1]!=0) {
    if (string[1].length == 1 )
    {   string[1] += "0";}
     }
    // Set the row value to the format you like, here : 12:40:00/12:40
      var changed_format = string[0] + ":" + string[1] + ":00";
     values[i][7]=changed_format;
     p = i+1;
     k = "H"+p;
     cell.setValue(changed_format);     
}
     else {
       var changed_format = values[i][7]+":00:00";
     cell.setValue(changed_format);

     }    
   }

在上面的代码中,我提到了列......即,我必须为每一列运行这个脚本......每次......例如:values[i][7] k="H"+pfor 8th column. 那么,任何人都可以告诉我怎么做...一次...如果可能的话减少我的代码..(优化)..还有..如果有可能这样做:如果我选择电子表格中的列和脚本所做的更改适用于该选定区域...我的意思是我希望我的脚本将所选区域作为输入...是否可以这样做..如果如何.?

4

1 回答 1

0

优化代码的一个关键是减少对 Google 服务的调用次数,并尝试使用 JavaScript 完成它们。这是您可以使用的优化版本。请注意,我尚未对其进行测试 - 因此,如果您遇到轻微的语法错误,请随时修复它们,或者如果您无法修复它们,请大声疾呼。

function myFunction() {
  var sheet=SpreadsheetApp.getActiveSheet();
  var rows= sheet.getDataRange();
  var values=rows.getValues(); 
  var COL_H = 8;

  var numRows=values.length ; // Length of array = nuymRows. rows.getNumRows();
  var column = [];
  //var p = 0;
  //var k = "H";
  var destArray = new Array();

   for (var i=0;i<numRows;i++) {

    // var cell = 
    //Split the string a the .
    var  string = values[i][7].split(".");

     string[0] = string[0].toString();
     //p = i+1;
     //k = "H"+p;
     //var cell = sheet.getRange(k);
     if(string[1]){
       string[1] = string[1].toString(); 
       // if the second part is like 4 in 12.4 you set it to 40

       if(string[1]!=0) {
         if (string[1].length == 1 )
         {   string[1] += "0";}
       }
      // Set the row value to the format you like, here : 12:40:00/12:40
      var changed_format = string[0] + ":" + string[1] + ":00";
      //values[i][7]=changed_format;
      //p = i+1;
      //k = "H"+p;
      //cell.setValue(changed_format);   
      destArray.push([changed_format]);  
    }
    else {
       var changed_format = values[i][7]+":00:00";
       //values [i][7] = changed_format;
     //cell.setValue(changed_format);
      destArray.push([changed_format]);
     }
   }
   var destRange = sheet.getRange(1, COL_H, destArray.length, 1);
   destRange.setValues(values);
}

提示:将格式化代码放入问题中有助于提高可读性

于 2013-06-27T07:04:12.897 回答