简短的javascript版本

问题描述 投票:0回答:1

我正在创建一个提交按钮脚本,其中第一张工作表中的数据将被传输到另一张工作表中。有没有办法缩短下面的代码?它太长了,我认为在传输数据时部分数据丢失了。我认为是E55,H55和I55

function submitentry() {

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sinput = ss.getSheetByName("Form");
  var soutput = ss.getSheetByName("Dashboard");
  var input = sinput.getRange('C5:C20').getValues();
  var secInput = sinput.getRange('K5:K19').getValues();
  var trdInput = sinput.getRange('B24').getValues();
  var frtInput = sinput.getRange('C24').getValues();
  var fifInput = sinput.getRange('E24').getValues();
  var sxtInput = sinput.getRange('H24').getValues();
  var sevInput = sinput.getRange('B28').getValues();
  var egtInput = sinput.getRange('C28').getValues();
  var ninInput = sinput.getRange('E28').getValues();
  var tenInput = sinput.getRange('H28').getValues();
  var elvInput = sinput.getRange('B32').getValues();
  var twvInput = sinput.getRange('C32').getValues();
  var trnInput = sinput.getRange('E32').getValues();
  var frnInput = sinput.getRange('H32').getValues();
  var fifInput = sinput.getRange('C36').getValues();
  var sxnInput = sinput.getRange('E37').getValues();
  var svtInput = sinput.getRange('H37').getValues();
  var ethInput = sinput.getRange('I37').getValues();
  var nntInput = sinput.getRange('J37').getValues();
  var twyInput = sinput.getRange('C41:C42').getValues();
  var tfiInput = sinput.getRange('E42').getValues();
  var tseInput = sinput.getRange('H42').getValues();
  var tthInput = sinput.getRange('I42').getValues();
  var tfoInput = sinput.getRange('J42').getValues();
  var tfvInput = sinput.getRange('E46').getValues();
  var tsxInput = sinput.getRange('H46').getValues();
  var tseInput = sinput.getRange('I46').getValues();
  var teiInput = sinput.getRange('E47').getValues();
  var tniInput = sinput.getRange('H47').getValues();
  var thyInput = sinput.getRange('I47').getValues();  
  var troInput = sinput.getRange('E48').getValues();
  var trwInput = sinput.getRange('H48').getValues();
  var trtInput = sinput.getRange('I48').getValues();
  var trfInput = sinput.getRange('E49').getValues();
  var trvInput = sinput.getRange('H49').getValues();
  var trxInput = sinput.getRange('I49').getValues();
  var trsInput = sinput.getRange('E50').getValues();
  var treInput = sinput.getRange('H50').getValues();
  var thnInput = sinput.getRange('I50').getValues();
  var ftyInput = sinput.getRange('E51').getValues();
  var fonInput = sinput.getRange('H51').getValues();
  var ftwInput = sinput.getRange('I51').getValues();
  var fthInput = sinput.getRange('E52').getValues();
  var ffoInput = sinput.getRange('H52').getValues();
  var ffiInput = sinput.getRange('I52').getValues();
  var fsiInput = sinput.getRange('E53').getValues();
  var fseInput = sinput.getRange('H53').getValues();
  var feiInput = sinput.getRange('I53').getValues();
  var fniInput = sinput.getRange('E54').getValues();
  var ffyInput = sinput.getRange('H54').getValues();
  var fioInput = sinput.getRange('I54').getValues();
  var fiwInput = sinput.getRange('E55').getValues();
  var fhrInput = sinput.getRange('H55').getValues();
  var ffrInput = sinput.getRange('I55').getValues();
  var fiwInput = sinput.getRange('E56').getValues();
  var fhrInput = sinput.getRange('H56').getValues();
  var ffrInput = sinput.getRange('I56').getValues();
  var ffvInput = sinput.getRange('E57').getValues();
  var fsxInput = sinput.getRange('H57').getValues();
  var fsvInput = sinput.getRange('I57').getValues();
  var fegInput = sinput.getRange('E58').getValues();
  var fnnInput = sinput.getRange('I58').getValues();
  var sxyInput = sinput.getRange('E59').getValues();
  var sxoInput = sinput.getRange('I59').getValues();
  var swoInput = sinput.getRange('E60').getValues();
  var strInput = sinput.getRange('I60').getValues();
  var sfoInput = sinput.getRange('E61').getValues();
  var sfiInput = sinput.getRange('I61').getValues();
  var ssxInput = sinput.getRange('E62').getValues();
  var sseInput = sinput.getRange('I62').getValues();
  var seiInput = sinput.getRange('E63').getValues();
  var sniInput = sinput.getRange('I63').getValues();
  var svyInput = sinput.getRange('E64').getValues();
  var svoInput = sinput.getRange('I64').getValues();
  var svwInput = sinput.getRange('E65').getValues();
  var svhInput = sinput.getRange('I65').getValues();
  var svfInput = sinput.getRange('E66').getValues();
  var svvInput = sinput.getRange('I66').getValues();
  var svxInput = sinput.getRange('E67').getValues();
  var svsInput = sinput.getRange('I67').getValues();
  var sveInput = sinput.getRange('E68').getValues();
  var svnInput = sinput.getRange('I68').getValues();
  var etyInput = sinput.getRange('E69').getValues();
  var eonInput = sinput.getRange('I69').getValues();
  var etwInput = sinput.getRange('E70').getValues();
  var etrInput = sinput.getRange('I70').getValues();
  var efoInput = sinput.getRange('E73').getValues();
  var efiInput = sinput.getRange('H73').getValues();
  var esiInput = sinput.getRange('C77:C80').getValues();
  var eseInput = sinput.getRange('I6').getValues();
  var eeiInput = sinput.getRange('I8').getValues();
  var eniInput = sinput.getRange('I10').getValues();
  var ntyInput = sinput.getRange('I12').getValues();
  var nnoInput = sinput.getRange('I14').getValues();  
  var flatin = [].concat.apply([], input);
  var secFlatin = [].concat.apply([],secInput);
  var trdFlatin = [].concat.apply([],trdInput);
  var frtFlatin = [].concat.apply([],frtInput);
  var fifFlatin = [].concat.apply([],fifInput);
  var sxtFlatin = [].concat.apply([],sxtInput);
  var sevFlatin = [].concat.apply([],sevInput);
  var egtFlatin = [].concat.apply([],egtInput);
  var ninFlatin = [].concat.apply([],ninInput);
  var tenFlatin = [].concat.apply([],tenInput);
  var elvFlatin = [].concat.apply([],elvInput);
  var twvFlatin = [].concat.apply([],twvInput);
  var trnFlatin = [].concat.apply([],trnInput);
  var frnFlatin = [].concat.apply([],frnInput);
  var fifFlatin = [].concat.apply([],fifInput);
  var sxnFlatin = [].concat.apply([],sxnInput);
  var svtFlatin = [].concat.apply([],svtInput);
  var ethFlatin = [].concat.apply([],ethInput);
  var nntFlatin = [].concat.apply([],nntInput);
  var twyFlatin = [].concat.apply([],twyInput);
  var tfiFlatin = [].concat.apply([],tfiInput);
  var tseFlatin = [].concat.apply([],tseInput);
  var tthFlatin = [].concat.apply([],tthInput);
  var tfoFlatin = [].concat.apply([],tfoInput);
  var tfvFlatin = [].concat.apply([],tfvInput);
  var tsxFlatin = [].concat.apply([],tsxInput);
  var tseFlatin = [].concat.apply([],tseInput);
  var teiFlatin = [].concat.apply([],teiInput);
  var tniFlatin = [].concat.apply([],tniInput);
  var thyFlatin = [].concat.apply([],thyInput);
  var troFlatin = [].concat.apply([],troInput);
  var trwFlatin = [].concat.apply([],trwInput);
  var trtFlatin = [].concat.apply([],trtInput);
  var trfFlatin = [].concat.apply([],trfInput);
  var trvFlatin = [].concat.apply([],trvInput);
  var trxFlatin = [].concat.apply([],trxInput);
  var trsFlatin = [].concat.apply([],trsInput);
  var treFlatin = [].concat.apply([],treInput);
  var thnFlatin = [].concat.apply([],thnInput);
  var ftyFlatin = [].concat.apply([],ftyInput);
  var fonFlatin = [].concat.apply([],fonInput);
  var ftwFlatin = [].concat.apply([],ftwInput);
  var fthFlatin = [].concat.apply([],fthInput);
  var ffoFlatin = [].concat.apply([],ffoInput);
  var ffiFlatin = [].concat.apply([],ffiInput);
  var fsiFlatin = [].concat.apply([],fsiInput);
  var fseFlatin = [].concat.apply([],fseInput);
  var feiFlatin = [].concat.apply([],feiInput);
  var fniFlatin = [].concat.apply([],fniInput);
  var ffyFlatin = [].concat.apply([],ffyInput);
  var fioFlatin = [].concat.apply([],fioInput);
  var fiwFlatin = [].concat.apply([],fiwInput);
  var fhrFlatin = [].concat.apply([],fhrInput);
  var ffrFlatin = [].concat.apply([],ffrInput);
  var ffvFlatin = [].concat.apply([],ffvInput);
  var fsxFlatin = [].concat.apply([],fsxInput);
  var fsvFlatin = [].concat.apply([],fsvInput);
  var fegFlatin = [].concat.apply([],fegInput);
  var fnnFlatin = [].concat.apply([],fnnInput);
  var sxyFlatin = [].concat.apply([],sxyInput);
  var sxoFlatin = [].concat.apply([],sxoInput);
  var swoFlatin = [].concat.apply([],swoInput);
  var strFlatin = [].concat.apply([],strInput);
  var sfoFlatin = [].concat.apply([],sfoInput);
  var sfiFlatin = [].concat.apply([],sfiInput);
  var ssxFlatin = [].concat.apply([],ssxInput);
  var sseFlatin = [].concat.apply([],sseInput);
  var seiFlatin = [].concat.apply([],seiInput);
  var sniFlatin = [].concat.apply([],sniInput);
  var svyFlatin = [].concat.apply([],svyInput);
  var svoFlatin = [].concat.apply([],svoInput);
  var svwFlatin = [].concat.apply([],svwInput);
  var svhFlatin = [].concat.apply([],svhInput);
  var svfFlatin = [].concat.apply([],svfInput);
  var svvFlatin = [].concat.apply([],svvInput);
  var svxFlatin = [].concat.apply([],svxInput);
  var svsFlatin = [].concat.apply([],svsInput);
  var sveFlatin = [].concat.apply([],sveInput);
  var svnFlatin = [].concat.apply([],svnInput);
  var etyFlatin = [].concat.apply([],etyInput);
  var eonFlatin = [].concat.apply([],eonInput);
  var etwFlatin = [].concat.apply([],etwInput);
  var etrFlatin = [].concat.apply([],etrInput);
  var efoFlatin = [].concat.apply([],efoInput);
  var efiFlatin = [].concat.apply([],efiInput);
  var esiFlatin = [].concat.apply([],esiInput);
  var eseFlatin = [].concat.apply([],eseInput);
  var eeiFlatin = [].concat.apply([],eeiInput);
  var eniFlatin = [].concat.apply([],eniInput);
  var ntyFlatin = [].concat.apply([],ntyInput);
  var nnoFlatin = [].concat.apply([],nnoInput);
  var lastRow = soutput.getLastRow()+1;
  soutput.getRange(lastRow, 1,1,16).setValues([flatin]);
  soutput.getRange(lastRow, 17, 1, 15).setValues([secFlatin]);
  soutput.getRange(lastRow, 32, 1, 1).setValues([trdFlatin]);
  soutput.getRange(lastRow, 33, 1, 1).setValues([frtFlatin]);
  soutput.getRange(lastRow, 34, 1, 1).setValues([fifFlatin]);
  soutput.getRange(lastRow, 35, 1, 1).setValues([sxtFlatin]);
  soutput.getRange(lastRow, 36, 1, 1).setValues([sevFlatin]);
  soutput.getRange(lastRow, 37, 1, 1).setValues([egtFlatin]);
  soutput.getRange(lastRow, 38, 1, 1).setValues([ninFlatin]);
  soutput.getRange(lastRow, 39, 1, 1).setValues([tenFlatin]);
  soutput.getRange(lastRow, 40, 1, 1).setValues([elvFlatin]);
  soutput.getRange(lastRow, 41, 1, 1).setValues([twvFlatin]);
  soutput.getRange(lastRow, 42, 1, 1).setValues([trnFlatin]);
  soutput.getRange(lastRow, 43, 1, 1).setValues([frnFlatin]);
  soutput.getRange(lastRow, 44, 1, 1).setValues([fifFlatin]);
  soutput.getRange(lastRow, 45, 1, 1).setValues([sxnFlatin]);
  soutput.getRange(lastRow, 46, 1, 1).setValues([svtFlatin]);
  soutput.getRange(lastRow, 47, 1, 1).setValues([ethFlatin]);
  soutput.getRange(lastRow, 48, 1, 1).setValues([nntFlatin]);
  soutput.getRange(lastRow, 49, 1, 2).setValues([twyFlatin]);
  soutput.getRange(lastRow, 51, 1, 1).setValues([tfiFlatin]);
  soutput.getRange(lastRow, 52, 1, 1).setValues([tseFlatin]);
  soutput.getRange(lastRow, 53, 1, 1).setValues([tthFlatin]);
  soutput.getRange(lastRow, 54, 1, 1).setValues([tfoFlatin]);
  soutput.getRange(lastRow, 55, 1, 1).setValues([tfvFlatin]);
  soutput.getRange(lastRow, 56, 1, 1).setValues([tsxFlatin]);
  soutput.getRange(lastRow, 57, 1, 1).setValues([tseFlatin]);
  soutput.getRange(lastRow, 58, 1, 1).setValues([teiFlatin]);
  soutput.getRange(lastRow, 59, 1, 1).setValues([tniFlatin]);
  soutput.getRange(lastRow, 60, 1, 1).setValues([thyFlatin]);
  soutput.getRange(lastRow, 61, 1, 1).setValues([troFlatin]);
  soutput.getRange(lastRow, 62, 1, 1).setValues([trwFlatin]);
  soutput.getRange(lastRow, 63, 1, 1).setValues([trtFlatin]);
  soutput.getRange(lastRow, 64, 1, 1).setValues([trfFlatin]);
  soutput.getRange(lastRow, 65, 1, 1).setValues([trvFlatin]);
  soutput.getRange(lastRow, 66, 1, 1).setValues([trxFlatin]);
  soutput.getRange(lastRow, 67, 1, 1).setValues([trsFlatin]);
  soutput.getRange(lastRow, 68, 1, 1).setValues([treFlatin]);
  soutput.getRange(lastRow, 69, 1, 1).setValues([thnFlatin]);
  soutput.getRange(lastRow, 70, 1, 1).setValues([ftyFlatin]);
  soutput.getRange(lastRow, 71, 1, 1).setValues([fonFlatin]);
  soutput.getRange(lastRow, 72, 1, 1).setValues([ftwFlatin]);
  soutput.getRange(lastRow, 73, 1, 1).setValues([fthFlatin]);
  soutput.getRange(lastRow, 74, 1, 1).setValues([ffoFlatin]);
  soutput.getRange(lastRow, 75, 1, 1).setValues([ffiFlatin]);
  soutput.getRange(lastRow, 76, 1, 1).setValues([fsiFlatin]);
  soutput.getRange(lastRow, 77, 1, 1).setValues([fseFlatin]);
  soutput.getRange(lastRow, 78, 1, 1).setValues([feiFlatin]);
  soutput.getRange(lastRow, 79, 1, 1).setValues([fniFlatin]);
  soutput.getRange(lastRow, 80, 1, 1).setValues([ffyFlatin]);
  soutput.getRange(lastRow, 81, 1, 1).setValues([fioFlatin]);
  soutput.getRange(lastRow, 82, 1, 1).setValues([fiwFlatin]);
  soutput.getRange(lastRow, 83, 1, 1).setValues([fhrFlatin]);
  soutput.getRange(lastRow, 84, 1, 1).setValues([ffrFlatin]);
  soutput.getRange(lastRow, 85, 1, 1).setValues([ffvFlatin]);
  soutput.getRange(lastRow, 86, 1, 1).setValues([fsxFlatin]);
  soutput.getRange(lastRow, 87, 1, 1).setValues([fsvFlatin]);
  soutput.getRange(lastRow, 88, 1, 1).setValues([fegFlatin]);
  soutput.getRange(lastRow, 89, 1, 1).setValues([fnnFlatin]);
  soutput.getRange(lastRow, 90, 1, 1).setValues([sxyFlatin]);
  soutput.getRange(lastRow, 91, 1, 1).setValues([sxoFlatin]);
  soutput.getRange(lastRow, 92, 1, 1).setValues([swoFlatin]);
  soutput.getRange(lastRow, 93, 1, 1).setValues([strFlatin]);
  soutput.getRange(lastRow, 94, 1, 1).setValues([sfoFlatin]);
  soutput.getRange(lastRow, 95, 1, 1).setValues([sfiFlatin]);
  soutput.getRange(lastRow, 96, 1, 1).setValues([ssxFlatin]);
  soutput.getRange(lastRow, 97, 1, 1).setValues([sseFlatin]);
  soutput.getRange(lastRow, 98, 1, 1).setValues([seiFlatin]);
  soutput.getRange(lastRow, 99, 1, 1).setValues([sniFlatin]);
  soutput.getRange(lastRow, 100, 1, 1).setValues([svyFlatin]);
  soutput.getRange(lastRow, 101, 1, 1).setValues([svoFlatin]);
  soutput.getRange(lastRow, 102, 1, 1).setValues([svwFlatin]);
  soutput.getRange(lastRow, 103, 1, 1).setValues([svhFlatin]);
  soutput.getRange(lastRow, 104, 1, 1).setValues([svfFlatin]);
  soutput.getRange(lastRow, 105, 1, 1).setValues([svvFlatin]);
  soutput.getRange(lastRow, 106, 1, 1).setValues([svxFlatin]);
  soutput.getRange(lastRow, 107, 1, 1).setValues([svsFlatin]);
  soutput.getRange(lastRow, 108, 1, 1).setValues([sveFlatin]);
  soutput.getRange(lastRow, 109, 1, 1).setValues([svnFlatin]);
  soutput.getRange(lastRow, 110, 1, 1).setValues([etyFlatin]);
  soutput.getRange(lastRow, 111, 1, 1).setValues([eonFlatin]);
  soutput.getRange(lastRow, 112, 1, 1).setValues([etwFlatin]);
  soutput.getRange(lastRow, 113, 1, 1).setValues([etrFlatin]);
  soutput.getRange(lastRow, 114, 1, 1).setValues([efoFlatin]);
  soutput.getRange(lastRow, 115, 1, 1).setValues([efiFlatin]);
  soutput.getRange(lastRow, 116, 1, 4).setValues([esiFlatin]);
  soutput.getRange(lastRow, 120, 1, 1).setValues([eseFlatin]);
  soutput.getRange(lastRow, 121, 1, 1).setValues([eeiFlatin]);
  soutput.getRange(lastRow, 122, 1, 1).setValues([eniFlatin]);
  soutput.getRange(lastRow, 123, 1, 1).setValues([ntyFlatin]);
  soutput.getRange(lastRow, 124, 1, 1).setValues([nnoFlatin]);
  soutput.insertRowAfter(soutput.getLastRow());
  Logger.log(input);  
}

为了提交此问题,我什至不得不在这个问题上写很多文本。那就是代码多长时间。因此,我不确定它是否能正确读取数据。

javascript google-apps-script shortcode
1个回答
2
投票

您应该将所有这些值加载到一个数组中,其中数组中的值索引等于您在变量名中进行的疯狂编号系统。这些变量名确实给您带来了很多麻烦,您以奇怪的方式缩写了数字并在变量名中使用了这些数字。您绝对应该将所有内容打包为数组或其他类似的数据类型,但是如果要像这样对每个变量使用变量,则最好将它们命名为input1,input2,input3等,而不是input,secInput,TrdInput。除了您之外,没有人会知道这些缩写,甚至您也可能会忘记它们,而不得不查询它们的拼写方式。您可能还使用了语义名称来描述输入的用途,或包含范围,例如inputK5K19或类似内容。切勿在代码中包含不常见(或更糟糕的是,刚组成的)缩写作为指示符。在命名时,要清晰而不是简洁是一种更好的做法,在这种情况下,您本可以更加简洁明了。正如我所说,为此,您可能希望将所有内容打包到一个数组中,而不是为每个输入值使用不同的变量。特别是考虑到这是您要从中获取的电子表格,请使用一种数据类型来存储它以反映该情况。

您没有提供足够的信息来让我熟练地重写您的整个代码段,但是我肯定会从不同地存储输入信息开始。一旦将其存储在一个数组中,它将允许您对其进行迭代,并在语法上更为简洁的循环中表达大量此类代码。

正如我所说,其中某些可能是错误的,因为我不知道您代码中包含的所有数字文字的含义,但这是我快速尝试将其缩短。

function submitEntry() {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(),
      ssInput = spreadsheet.getSheetByName("Form"),
      ssOutput = spreadsheet.getSheetByName("Dashboard"),
      inputArr = [],
      rangeArr = [
        'C5:C20',
        'K5:K19',
        'B24',
        'C24',
        'E24',
        'H24',
        'B28'
        // ... Continue the ranges used in the order you
        // wrote them initially in your variables
      ],
      rangeArrLen = rangeArr.length,
      flattenedArrs = [],
      i = 0,
      lastRow = ssOutput.getLastRow() + 1,
      inputArrLen,
      flattenedArrsLen,
      // One of your parameters starts at 32 and then increments all the way to 126. 
      incrementor = 32; 

  for (; i < rangeArrLen; ++i) {
    inputArr.push(ssInput.getRange(rangeArr[i]).getValues());
  }

  for (i = 0, inputArrLen = inputArr.length; i < inputArrLen; ++i) {
    flattenedArrs.push([].concat.apply([], inputArr[i]))
  }

  // Did these two outside the loop because the parameters for getRange
  // didn't match up or sequentially increment the way the others did
  ssOutput.getRange(lastRow, 1,1,16).setValues([flattenedArrs[0]]);
  ssOutput.getRange(lastRow, 17, 1, 15).setValues([flattenedArrs[1]]);

  for (i = 2, flattenedArrsLen = flattenedArrs.length; i < flattenedArrsLen; ++i) {
    ssOutput.getRange(lastRow, incrementor, 1, 1).setValues([flattenedArs[i]]);

    incrementor += 1;
  }

  ssOutput.insertRowAfter(ssOutput.getLastRow());
  Logger.log(input);
}
© www.soinside.com 2019 - 2024. All rights reserved.