Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.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
Google apps script 用于将一列中的数据与一行进行比较并写入相应列的脚本_Google Apps Script_Google Sheets_Google Sheets Api - Fatal编程技术网

Google apps script 用于将一列中的数据与一行进行比较并写入相应列的脚本

Google apps script 用于将一列中的数据与一行进行比较并写入相应列的脚本,google-apps-script,google-sheets,google-sheets-api,Google Apps Script,Google Sheets,Google Sheets Api,我的脚本的第一部分工作正常,因为它们是基本命令。第一个清除当前的数据,以便准备重新写入。第二种方法按区域和开始日期对数据进行排序。我被第三部分卡住了 我在C列中有一组日期,在E列中有一个主题行。我在第1行的L列到NL列中有相应的日期。我正在尝试编写一个脚本,它将获取每行的日期,将其与列L:NL进行比较,如果有匹配项,它将在相应的单元格中粘贴主题 我知道我的for语句或if语句都有问题,因为现在它只在L列中写入每行的主题 这里有一个例子 您希望将C列和D列的日期与L1:NL1的日期作为范围进行对应

我的脚本的第一部分工作正常,因为它们是基本命令。第一个清除当前的数据,以便准备重新写入。第二种方法按区域和开始日期对数据进行排序。我被第三部分卡住了

我在C列中有一组日期,在E列中有一个主题行。我在第1行的L列到NL列中有相应的日期。我正在尝试编写一个脚本,它将获取每行的日期,将其与列L:NL进行比较,如果有匹配项,它将在相应的单元格中粘贴主题

我知道我的for语句或if语句都有问题,因为现在它只在L列中写入每行的主题

这里有一个例子

您希望将C列和D列的日期与L1:NL1的日期作为范围进行对应。 您希望将列E的值放入对应范围的第一个单元格。 您要将对应范围的背景色更改为b7e1cd。 如果我对你的问题的理解是正确的,那么这次修改怎么样?从你的问题中,我可以理解,在度假之前清除当前数据的脚本和按区域写入和排序数据,然后按开始日期工作都很好。所以我修改了第三部分。我认为有几种方法可以解决你的情况。所以,请把这看作是其中之一

流量: 此修改的流程如下所示

检索C3:E的值。 检索L1:NL1的日期。 将C3:E的每一行值与L1:NL1的日期进行比较,并创建一个用于输出的数组。 创建2个新阵列以放入单元格L3:NL。这些用于值和背景色。 使用第3节中创建的数组将值放入2个新数组。 输入值并设置背景色。 修改脚本: 请按如下方式修改您的脚本

发件人: 致:
你太聪明了!!非常感谢你!!!这正是我需要的。单元格的颜色更复杂,因为它将根据F列中选择的类别使用不同的颜色。目前我可以使用条件格式,但稍后将切换到脚本。您现在提供的任何建议都将受到感谢。@Leilani我很高兴您的问题得到了解决。谢谢。@tanaika-我没有意识到我的每个部分的标题对脚本来说都是个问题。有没有办法更新脚本以忽略它们?我已经用测试数据更新了电子表格以供参考。@Leilani About我没有意识到我的每个部分的标题对于脚本来说都是一个问题。您想使用包含内部标题的示例电子表格吗。我是这样理解的。如果我的理解是正确的,请像添加的脚本一样修改。但我不确定你在想什么规格。因此,如果我误解了你的新问题,你能把这个问题包括你想要什么作为一个新问题吗?我真的很抱歉我的技术很差。
function clear_Sort_Label() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');

  //Clear current data before resort and write
  var rangesToClear = sheet.getRange("L3:NL");
  rangesToClear.clearContent();

  //Sort the data by region then start date
  var range = sheet.getRange("A2:K");
  range.sort([{column: 2, ascending: true}, {column: 3, ascending: true}]);

  //Compare Start date (Column C) against dates in Row 1 Columns L:NL
  //Each match paste value from subject (Column E) in coresponding cell
  var lastRow = sheet.getMaxRows()
  var lastCol = sheet.getMaxColumns() 
  for (var i=3; i<lastRow; i++) {
    var meetingSubject = sheet.getRange(i,5).getValue();
    var startDay = sheet.getRange(i,3).getValue();  
    Logger.log(startDay)
    var day = sheet.getRange(1,12,1,lastCol).getValues()[0];
    if(startDay = day){
      sheet.getRange(i,12).setValue(meetingSubject);
  }
}
}
var lastRow = sheet.getMaxRows()
var lastCol = sheet.getMaxColumns() 
for (var i=3; i<lastRow; i++) {
  var meetingSubject = sheet.getRange(i,5).getValue();
  var startDay = sheet.getRange(i,3).getValue();  
  Logger.log(startDay)
  var day = sheet.getRange(1,12,1,lastCol).getValues()[0];
  if(startDay = day){
    sheet.getRange(i,12).setValue(meetingSubject);
}
var values = sheet.getRange("C3:E").getValues().filter(function(e) {return e.some(function(f){return f})}).map(function(e) {return [e[0].getTime(), e[1].getTime(), e[2]]});
var dates = sheet.getRange("L1:NL1").getValues()[0].map(function(e) {return e.getTime()});
var res = values.reduce(function(ar1, e, i) {
  var r = dates.reduce(function(ar2, f, j) {
    if (f == e[0]) ar2.push([e[2], i, j]);
    if (f == e[1]) ar2.push(j);
    return ar2;
  }, []);
  if (r.length == 2) ar1.push(Array.prototype.concat.apply([], r));
  return ar1;
}, []);
var row = values.length;
var col = dates.length;
var values = Array.apply(null, Array(row)).map(function() {return Array.apply(null, Array(col)).map(function() {return ""})});
var colors = Array.apply(null, Array(row)).map(function() {return Array.apply(null, Array(col)).map(function() {return ""})});
res.forEach(function(e) {
  values[e[1]][e[2]] = e[0];
  for (var i = e[2]; i <= e[3]; i++) {
    colors[e[1]][i] = "#b7e1cd";
  }
});
sheet.getRange("L3:NL" + (row + 2)).setValues(values).setBackgrounds(colors);
var values = sheet.getRange("C3:E").getValues().filter(function(e) {return e.some(function(f){return f})}).map(function(e) {return [e[0].getTime(), e[1].getTime(), e[2]]});
var dates = sheet.getRange("L1:NL1").getValues()[0].map(function(e) {return e.getTime()});
var res = values.reduce(function(ar1, e, i) {
  var r = dates.reduce(function(ar2, f, j) {
    if (f == e[0]) ar2.push([e[2], i, j]);
    if (f == e[1]) ar2.push(j);
var values = sheet.getRange("A3:E").getValues().filter(function(e) {return e.some(function(f){return f})}).map(function(e) {return [e[0], e[2].getTime(), e[3].getTime(), e[4]]});
var dates = sheet.getRange("L1:NL1").getValues()[0].map(function(e) {return e.getTime()});
var res = values.reduce(function(ar1, e, i) {
  var r = dates.reduce(function(ar2, f, j) {
    if (e[0] && f == e[1]) ar2.push([e[3], i, j]);
    if (e[0] && f == e[2]) ar2.push(j);