Google工作表脚本用于设置列中的值

时间:2018-05-06 18:21:51

标签: loops google-apps-script google-sheets

我有两张纸和#34;重量"和" Marks_All"。我想做以下事情:

  1. 从" Weights"
  2. 中读取两个变量wt1wt2
  3. 阅读了三列ERAM(从第4行到第94行;所有三列各有90个值)
  4. 根据公式<{li>>设置列AS中的值(从第4行到第94行; 90个值)
      

    (E [row]中的值)+(R [row]中的值)* wt1 +(AM [row]中的值)* wt2

    以下代码给出了一个输出,但是有更好的方法吗?

    function Result () {
    var ss1 = SpreadsheetApp.getActiveSpreadsheet();
    var sheet1 = ss1.getSheetByName("Weight");
    var wt1= sheet1.getRange("C4").getValue();
    var wt2=sheet1.getRange("C10").getValue();
    var ss2 = SpreadsheetApp.getActiveSpreadsheet();
    var sheet2 = ss2.getSheetByName("Marks_All");
     for (var row = 4 ;row < 95; row++) {
          {
               var range1 = sheet2.getRange(row,5).getValue();
               var range2 = sheet2.getRange(row,18).getValue();
               var range3 = sheet2.getRange(row,39).getValue();
               var Result = range1+range2*wt1+range3*wt2;
               sheet2.getRange(row,45).setValue(Result);
    
          }
    }
    

1 个答案:

答案 0 :(得分:1)

这次修改怎么样?

修改要点:

  • 同一电子表格中有WeightMarks_All。因此,您只需声明一次SpreadsheetApp.getActiveSpreadsheet()即可使用每张表。
  • 在for循环中使用getValue()setValue()效率不高。因此,请使用getValues()setValues()
    • 在此修改中,首先,&#34; A4:AM94&#34;被收回了。
    • 计算出数值。
    • 计算出的值放在&#34; AS4:AS94&#34;。

修改后的脚本:

function Result () {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet1 = ss.getSheetByName("Weight");
  var sheet2 = ss.getSheetByName("Marks_All");
  var wt1 = sheet1.getRange("C4").getValue();
  var wt2 = sheet1.getRange("C10").getValue();

  var values = ss.getRange("A4:AM94").getValues(); // Modified: Retrieve values
  var results = values.map(function(e){return [e[4] + e[17] * wt1 + e[38] * wt2]}); // Modified: Calculate the retrieved values
  sheet2.getRange(4, 45, results.length, results[0].length).setValues(results); // Modified: Put the calculated values
}

参考文献:

如果我误解了你的问题,我很抱歉。

相关问题