Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.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/9/google-apps-script/6.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/6/cplusplus/131.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 使用ECMAScript 6收集响应并在Google表单中进行统计_Javascript_Google Apps Script_Ecmascript 6_Google Forms_Google Apps Script Editor - Fatal编程技术网

Javascript 使用ECMAScript 6收集响应并在Google表单中进行统计

Javascript 使用ECMAScript 6收集响应并在Google表单中进行统计,javascript,google-apps-script,ecmascript-6,google-forms,google-apps-script-editor,Javascript,Google Apps Script,Ecmascript 6,Google Forms,Google Apps Script Editor,我正在使用脚本编辑器收集谷歌表单中的调查结果。我的脚本看起来像: function myFunction() { var formResponses = FormApp.getActiveForm().getResponses(); var allResponses=[]; for (var j = 0; j < formResponses.length; j++) { var formResponse = formResponses[j]; var itemR

我正在使用脚本编辑器收集谷歌表单中的调查结果。我的脚本看起来像:

function myFunction() {
  var formResponses = FormApp.getActiveForm().getResponses();
  var allResponses=[];
  for (var j = 0; j < formResponses.length; j++) {
    var formResponse = formResponses[j];
    var itemResponses = formResponse.getItemResponses();
    for (var i = 0; i < itemResponses.length; i++) {
      var itemResponse = itemResponses[i];
      allResponses.push( itemResponse.getResponse() );
    }
  }
  var jsonRes=JSON.stringify(allResponses);
  MailApp.sendEmail("noreply@mydomain.com", "Survey Results", jsonRes);
}
这将只输出我的响应列表,如下所示

[
"1,responseA,1024",
"2,responseA,956",
"3,responseA,433"
]
等等

出乎意料的是,这将导致Google脚本编辑器出错,因此我认为这是ECMA6箭头操作符,因此我返回到函数:

var words=allResponses.map(function(a) { return a.join(',') } ).join(',').split(',');
  var map=words.reduce(function(m,v) { return m.set(v, (m.get(v) || 0) + 1)}, new Map() );
  // convert back Map entries to Array
  var chart = Array.from(map.entries());
  chart.sort(function(a,b){ return (b[1]-a[1])});
  var jsonRes=JSON.stringify(chart);
有趣的故事:
Map
对象是
未定义的
ergo谷歌脚本不支持
ECMAScript6
或者我做错了什么,是吗

[更新]

这是工作的谷歌脚本解决方案,感谢以下回复:

function myFunction() {
  var formResponses = FormApp.getActiveForm().getResponses();
  var allResponses=[];
  for (var j = 0; j < formResponses.length; j++) {
    var formResponse = formResponses[j];
    var itemResponses = formResponse.getItemResponses();
    for (var i = 0; i < itemResponses.length; i++) {
      var itemResponse = itemResponses[i];
      allResponses.push( itemResponse.getResponse() );
    }
  }

  var words=allResponses.map(function(a) { return a.join(',') }).join(',').split(',');
  var chart = words.reduce(function(m,v) {m[v] = m[v] ? m[v] + 1 : 1; return m;}, {}); // Added
  chart = Object.keys(chart).map(function(k) {return [k, chart[k]]}).sort(function(a,b) {return b[1]-a[1]}); // Added
  chart=chart.map(function(i) { return i.join(",")})
  chart=chart.map(function(item,index) { return ((index+1)+","+item)})
  var jsonRes=JSON.stringify(chart);

  MailApp.sendEmail("noreply@mydomain.com", "Survey Results", jsonRes);
}
函数myFunction(){
var formResponses=FormApp.getActiveForm().getResponses();
var-allResponses=[];
对于(var j=0;j,“+项)})
var jsonRes=JSON.stringify(图表);
MailApp.sendEmail(“noreply@mydomain.com“,“调查结果”,jsonRes);
}

这个示例怎么样?Google应用程序脚本还不能使用ECMAScript 6。所以
Map.prototype.set()
Map.prototype.get()
也不能使用。我修改了你的脚本,以便能够在谷歌应用程序脚本中使用。修改后的脚本在GAS上工作

发件人: 致:


我不知道这是否是最好的修改。因为我不知道原始数据,如果这对您没有用处,我很抱歉。

这个样本怎么样?Google应用程序脚本还不能使用ECMAScript 6。所以
Map.prototype.set()
Map.prototype.get()
也不能使用。我修改了你的脚本,以便能够在谷歌应用程序脚本中使用。修改后的脚本在GAS上工作

发件人: 致:


我不知道这是否是最好的修改。因为我不知道原始数据,如果这对您没有用处,我很抱歉。

如果您确实需要地图,并且不能使用POJO,为什么不加载多边形填充


最好的是
core js
,这是巴贝尔用于所有ES6+功能的。如果您确实需要地图,并且不能使用POJO,为什么不加载多边形填充呢


最好的是
core js
,这是巴贝尔用于所有ES6+功能的。您甚至可以仅对所需的功能进行自定义构建

是否尝试仅删除扩展运算符?是的,在第二个版本中,我已移动到
Array.from(map.entries())而不是
[…]
。并且还删除了
=>
操作符。文档(2017年5月更新)列出了支持哪些JavaScript版本。谢谢,因此它似乎停留在
ECMAScript 5
上。因此,我需要一个不同的图表计算实现:(我的答案对您有用吗?如果您对我的答案还有疑问,请随时告诉我。我想研究解决您的问题。您是否尝试仅删除扩展运算符?是的,在第二个版本中,我已移动到
Array.from(map.entries());
而不是
[…]
。并删除了
=>
运算符。文档(2017年5月更新)列出了支持哪些JavaScript版本。谢谢,因此它似乎停留在
ECMAScript 5
。因此我需要一个不同的图表计算实现:(我的答案对你有用吗?如果你对我的答案还有问题,请随时告诉我。我想学习解决你的问题。谢谢你,这就是解决方案!我已经用你的解决方案用完整脚本更新了我的代码!@loretoparisi谢谢你的回答。我很高兴对你有用。我可以从你的问题中学习。Tha谢谢你的回答!我已经用你的解决方案更新了我的代码和完整的脚本!@loretoparisi谢谢你的回答。我很高兴对你有用。我可以从你的问题中学习。
function myFunction() {
  var formResponses = FormApp.getActiveForm().getResponses();
  var allResponses=[];
  for (var j = 0; j < formResponses.length; j++) {
    var formResponse = formResponses[j];
    var itemResponses = formResponse.getItemResponses();
    for (var i = 0; i < itemResponses.length; i++) {
      var itemResponse = itemResponses[i];
      allResponses.push( itemResponse.getResponse() );
    }
  }

  var words=allResponses.map(function(a) { return a.join(',') }).join(',').split(',');
  var chart = words.reduce(function(m,v) {m[v] = m[v] ? m[v] + 1 : 1; return m;}, {}); // Added
  chart = Object.keys(chart).map(function(k) {return [k, chart[k]]}).sort(function(a,b) {return b[1]-a[1]}); // Added
  chart=chart.map(function(i) { return i.join(",")})
  chart=chart.map(function(item,index) { return ((index+1)+","+item)})
  var jsonRes=JSON.stringify(chart);

  MailApp.sendEmail("noreply@mydomain.com", "Survey Results", jsonRes);
}
var chart=[...words.reduce( (m, v) => m.set(v, (m.get(v) || 0) + 1), new Map() )].sort((a,b) => b[1]-a[1])
chart=chart.map(function(i) { return i.join(",")})
chart=chart.map(function(item,index) { return ((index+1)+","+item)})
var jsonRes=JSON.stringify(chart);
var chart = words.reduce(function(m,v) {m[v] = m[v] ? m[v] + 1 : 1; return m;}, {}); // Added
chart = Object.keys(chart).map(function(k) {return [k, chart[k]]}).sort(function(a,b) {return b[1]-a[1]}); // Added
chart=chart.map(function(i) { return i.join(",")})
chart=chart.map(function(item,index) { return ((index+1)+","+item)})
var jsonRes=JSON.stringify(chart);