Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.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 GoogleSheet脚本按日期隐藏列_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script GoogleSheet脚本按日期隐藏列

Google apps script GoogleSheet脚本按日期隐藏列,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我实际上是在尝试完全按照中所做的操作,但是使用列而不是行。当我在那里按原样运行脚本时,它工作得很好。但是,由于某种原因,仅仅将所有对列的引用切换到行(反之亦然)对我来说是行不通的,我也不知道出了什么问题 以下是我的参考资料: 函数onOpen() { var ui=SpreadsheetApp.getUi(); ui.createMenu(“我的工具”) .addItem('Hide Columns','hideColumnsDate') .addToUi(); } 函数hideColumnsD

我实际上是在尝试完全按照中所做的操作,但是使用列而不是行。当我在那里按原样运行脚本时,它工作得很好。但是,由于某种原因,仅仅将所有对列的引用切换到行(反之亦然)对我来说是行不通的,我也不知道出了什么问题

以下是我的参考资料:

函数onOpen() { var ui=SpreadsheetApp.getUi(); ui.createMenu(“我的工具”) .addItem('Hide Columns','hideColumnsDate') .addToUi(); } 函数hideColumnsDate(行) { 变量行=(typeof(row)!='undefined')?行:'1'; var日=86400000; var today=new Date().getTime(); var rng=SpreadsheetApp.getActiveSheet().getRange(行+':'+行); var rngA=rng.getValues(); 对于(变量i=0;i7)) { SpreadsheetApp.getActiveSheet().hideColumns(i+1); } } } 函数isDate(x) { return(null!=x)&&!isNaN(x)&((“未定义”!==typeof x.getDate); }
当您的脚本被修改时,这次修改怎么样?请认为这只是几个修改中的一个

修改点:
  • 在您的情况下,从范围
    SpreadsheetApp.getActiveSheet().getRange(row+':'+row)
    中检索到的值是
    [[column1,column2,column3,,,,]]
    • 在这种情况下,for循环的长度为
      rngA[0]。长度为
    • 为了检索列的值,请将
      rngA[i][0]
      修改为
      rngA[0][i]
修改脚本: 发件人:
for(变量i=0;i7))
致:
for(var i=0;i7))
注:
  • 在您的情况下,与其他模式一样,您也可以使用以下修改。
    • var-rngA=rng.getValues();
      修改为
      var-rngA=rng.getValues()[0];
      ,并将
      rngA[i][0]
      修改为
      rngA[i]
  • 在上面修改的脚本中,一列的所有行都被检查。如果您想检查特定的列,请告诉我
参考:

如果这不是您想要的结果,我很抱歉。

@janine610谢谢您的回复。我很高兴您的问题得到解决。也谢谢您。
function hideColumnsDate(row) {
  var row=row||1;
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getActiveSheet();
  var rg=sh.getRange(row,1,1,sh.getLastColumn());
  var vA=rg.getValues()[0];
  var today=new Date().valueOf();
  vA.forEach(function(e,i){
    var rowdate=new Date(e).valueOf();
    if(((today-rowdate)/86400000)>7) {
      sh.hideColumns(i+1);
    }
  }); 
}
for(var i = 0; i < rngA[0].length ;i++)
{
  if(isDate(rngA[0][i]) && (((today - new Date(rngA[0][i]).getTime())/day) > 7 ))
function hideColumnsDate(row) {
  var row=row||1;
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getActiveSheet();
  var rg=sh.getRange(row,1,1,sh.getLastColumn());
  var vA=rg.getValues()[0];
  var today=new Date().valueOf();
  vA.forEach(function(e,i){
    var rowdate=new Date(e).valueOf();
    if(((today-rowdate)/86400000)>7) {
      sh.hideColumns(i+1);
    }
  }); 
}