Google apps script 如何使用批处理操作优化代码?

Google apps script 如何使用批处理操作优化代码?,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我想对电子表格中的一系列值执行基本乘法,然后将这些值除以一列中的一系列值,请注意,我的范围是8列,除法范围是一列 我有以下代码: function multiply() { var doc = SpreadsheetApp.openById(SCRIPT_PROP.getProperty("1iXQxyL3URe1X1FgbZ76mEFAxLnxegyDzXOMF6WQ5Yqs")); var sheet = doc.getSheetByName("json"); var sheet

我想对电子表格中的一系列值执行基本乘法,然后将这些值除以一列中的一系列值,请注意,我的范围是8列,除法范围是一列

我有以下代码:

function multiply() {
  var doc = SpreadsheetApp.openById(SCRIPT_PROP.getProperty("1iXQxyL3URe1X1FgbZ76mEFAxLnxegyDzXOMF6WQ5Yqs"));
  var sheet = doc.getSheetByName("json");
  var sheet2 = doc.getSheetByName("tabla de frecuencias");
  var sheet3 = doc.getSheetByName("Template");

  var range = sheet2.getDataRange();
  var numRows = range.getNumRows();
  var numCols = range.getNumColumns()-1; //This will get the division values which are located in the last column
  var targ =  sheet2.getLastColumn();

  for (var i = 2; i <= numRows; i++) {
    for (var j = 2; j <= numCols; j++) {
      var A = range.getCell(i,j).getValue();
      var value = A;
      for (var v = 1; v <= numRows; v++) {

        var T = range.getCell(v,targ).getValue();

        range.getCell(i,j).setValue(value*100/T);
      }
    }         
  }
}
函数乘法(){
var doc=SpreadsheetApp.openById(脚本_PROP.getProperty(“1ixxxyl3ure1xfgbz76mefaxlnxegydzxomf6wq5yqs”);
var sheet=doc.getSheetByName(“json”);
var sheet2=文件getSheetByName(“频率表”);
var sheet3=doc.getSheetByName(“模板”);
var range=sheet2.getDataRange();
var numRows=range.getNumRows();
var numCols=range.getNumColumns()-1;//这将获得位于最后一列中的除法值
var targ=sheet2.getLastColumn();

对于(var i=2;i我想这就是你想要的

function multiply() 
{
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName("Sheet60");
  var rg=sh.getDataRange();
  var dataA=rg.getValues();
  for(var i=1;i<dataA.length;i++) 
  {
    for(var j=1;j<dataA[0].length-1;j++) 
    {
      var value=dataA[i][j];
      for (var v=1;v<dataA.length;v++) 
      {
        var T=dataA[v][dataA[0].length-1];//the value in the last column on this row
        Logger.log('v=%s dataA[%s][%s]=%s',v,i,j,dataA[i][j]);
        dataA[i][j]=value * 100 / T;//This seems wrong because it puts a different value into dataA[i][j] which doesn't change inside this inner loop and so only the last value remains in dataA[i][j]
      }
    }         
  }
  rg.setValues(dataA);
}
函数乘法()
{
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName(“Sheet60”);
var rg=sh.getDataRange();
var dataA=rg.getValues();

对于(var i=1;i我想这就是你想要的

function multiply() 
{
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName("Sheet60");
  var rg=sh.getDataRange();
  var dataA=rg.getValues();
  for(var i=1;i<dataA.length;i++) 
  {
    for(var j=1;j<dataA[0].length-1;j++) 
    {
      var value=dataA[i][j];
      for (var v=1;v<dataA.length;v++) 
      {
        var T=dataA[v][dataA[0].length-1];//the value in the last column on this row
        Logger.log('v=%s dataA[%s][%s]=%s',v,i,j,dataA[i][j]);
        dataA[i][j]=value * 100 / T;//This seems wrong because it puts a different value into dataA[i][j] which doesn't change inside this inner loop and so only the last value remains in dataA[i][j]
      }
    }         
  }
  rg.setValues(dataA);
}
<代码>函数乘法() { var ss=SpreadsheetApp.getActive(); var sh=ss.getSheetByName(“Sheet60”); var rg=sh.getDataRange(); var dataA=rg.getValues();
对于(var i=1;我尝试了你的脚本,但没有成功,你能评论每一行来帮助我理解解释吗?我只是对第二个循环做了一个更改,这样它就不会访问最后一列中的数据。当我运行调整后的脚本时,我的电子表格没有任何变化。我想将这些值乘以100,然后除以nu总列中的mber您的脚本很棒,可能我还不清楚我希望它执行的操作:例如,B2应乘以100,然后除以示例中第H2行的值(以获得百分比)我不明白脚本在做什么计算,例如,如果单元格中的值是5,结果应该是50。我做了另一个更改,现在我认为我更接近你的函数所做的。我尝试了你的脚本,但没有成功,你能评论每一行来帮助我解释吗?我只是对第二个循环,这样它就不会访问最后一列中的数据。当我运行调整后的脚本时,我的电子表格不会发生任何变化。我想将这些值乘以100,然后除以总列中的数字。您的脚本很棒,可能我还不清楚我希望它执行的操作:例如,B2应该乘以乘以100,然后除以示例中第H2行的值(以获得百分比)。我不明白脚本正在进行什么计算,例如,如果单元格中的值为5,则结果应为50。我做了另一个更改,现在我认为我更接近您的函数所做的。