Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.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 使用GAS重复打印每个数组值_Javascript_Google Apps Script - Fatal编程技术网

Javascript 使用GAS重复打印每个数组值

Javascript 使用GAS重复打印每个数组值,javascript,google-apps-script,Javascript,Google Apps Script,我试了一整天,但都没用。我需要能够将数组中的每个值反复返回到google sheet,(n-1)次,数组长度为n。此array.length预计不一致,具体取决于用户通过google表单输入的内容 用户需要在google表单的文本字段中输入一些代码名,并用符号“| |”分隔每个代码名。每个代码名都必须是唯一的,但在执行其他流程之前,仍会进行验证检查以删除重复的代码名。然后重复返回google工作表中的行输出 例如,在数组中输入5个代码名=['Marvell'、'Xtortion'、'Dumina

我试了一整天,但都没用。我需要能够将数组中的每个值反复返回到google sheet,(n-1)次,数组长度为n。此array.length预计不一致,具体取决于用户通过google表单输入的内容

用户需要在google表单的文本字段中输入一些代码名,并用符号“| |”分隔每个代码名。每个代码名都必须是唯一的,但在执行其他流程之前,仍会进行验证检查以删除重复的代码名。然后重复返回google工作表中的行输出

例如,在数组中输入5个代码名=['Marvell'、'Xtortion'、'Duminalize'、'呼气'、'Xtortion']
我的代码如下:-

//by Bjorn | https://stackoverflow.com/questions/881085/count-the-number-of-occurrences-of-a-character-in-a-string-in-javascript
var cname=sheet.getRange(2,1).getValue();
var code=cname.split("||");
var codename=[...new Set(code)]; //get unique values first
var count=cname.split("||").length - 1;  // to get freq to repeat output of same value.
// ['Marvell','Xtortion','Ambiguous','Exhale']
// array.length is 4, output each value being returned to google sheet start from row 3 in col A should be 3 times (n-1)
  
  var lrow=sheet.getLastRow();
  for(var i=1;i<=count;i++){
    for(var j=0;j<=count;j++){
       sheet.getRange(lrow+1,1,i,1).setValue([j]);
           var lrow=sheet.getLastRow();
   }
  }
}

比约恩https://stackoverflow.com/questions/881085/count-the-number-of-occurrences-of-a-character-in-a-string-in-javascript var cname=sheet.getRange(2,1).getValue(); var code=cname.split(“| |”); var codename=[…新集合(代码)]//首先获取唯一值 var count=cname.split(“| |”)。长度-1;//获得相同值的重复输出的频率。 //['Marvell','Xtortion','Missible','呼气'] //array.length为4,输出从A列第3行开始返回到google工作表的每个值应为3倍(n-1) var lrow=sheet.getLastRow(); 对于(var i=1;i见下表,答案如下:

function fillArray(value, len) {
  var arr = [];
  for (var i = 0; i < len; i++) {
    arr.push(value);
  }
  return arr;
}
函数填充数组(值,len){
var-arr=[];
对于(变量i=0;i
您发布的代码正在打印索引,而不是您在文章中列出的内容

  • 您没有正确计算计数。在代码中,您将计数设置为4。您应该使用
    codename
    ,而不是重新填充原始字符串
  • 你的第一个循环应该是迭代唯一的值,而不是
    count
    。想想你在帖子中写的,“我需要能够将数组中的每个值反复返回到google工作表”。首先是值,然后你重复它

  • 在for循环中,您可以从0或1开始切换。请坚持使用其中一个循环,因为它将帮助您避免对您的条件感到困惑。(例如:
    for(var i=0;我尝试了这段代码。在日志中,我可以看到数组中出现的所有值,但当我运行它时,输出仅显示在数组的第一个值上,并且只出现一次。不确定我是否使用了错误的命令使其按我所希望的方式返回,或者此解决方案目前不适用于我的情况。但是感谢您的共享。哇!您真的很高兴ock,@Diego!我很惊讶你把它写得如此详细,并给出了我想要的精确答案。另外,你甚至还展示了我的代码的更正。我对这两个都进行了测试。但我非常喜欢你的代码,因为我发现你的代码处理结果的速度比我的快得多,因为我在运行代码时看到了工作表中的输出。a拉姆杜利拉…!!你是我的救世主,先生!:)
    
    function fixed() {
      var sheet = SpreadsheetApp.getActive().getSheetByName('Sheet1');
      //by Bjorn | https://stackoverflow.com/questions/881085/count-the-number-of-occurrences-of-a-character-in-a-string-in-javascript
      var cname = sheet.getRange(2,1).getValue();
      var code = cname.split("||");
      var codename = [...new Set(code)]; //get unique values first
      var count= codename.length - 1;  // to get freq to repeat output of same value.
      // ['Marvell','Xtortion','Ambiguous','Exhale']
      // array.length is 4, output each value being returned to google sheet start from row 3 in col A should be 3 times (n-1)
      
      var lrow=sheet.getLastRow();
      for(var i=0;i<codename.length;i++){
        for(var j=0;j<count;j++){
          sheet.getRange(lrow+1,1).setValue(codename[i]);
          var lrow=sheet.getLastRow();
        }
      }
    }
    
    function improved() {
      var sheet = SpreadsheetApp.getActive().getSheetByName("Sheet1");
      var input = sheet.getRange(2,1).getValue();
      var uniqueValues = [...new Set(input.split("||"))]; 
      var frequency = uniqueValues.length - 1;
      
      var output = [];
      for (var i = 0; i < uniqueValues.length; i++) {
        for (var j = 0; j < frequency; j++) {
          output.push([uniqueValues[i]]);
        }
      }
      
      sheet.getRange(sheet.getLastRow()+1, 1, output.length, output[0].length).setValues(output);
    }