【问题标题】:Move to the top function in google spreadsheets移动到谷歌电子表格的顶部函数
【发布时间】:2014-08-24 12:34:43
【问题描述】:

这个函数可以将当前选中的单元格或范围移动到“列表”的顶部,可以这么说。在待办事项列表中超级有用。感谢布赖恩 P 的帮助!

function arrayShift(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var activeRange = sheet.getActiveRange();
  var toDoRange = sheet.getRange("A2:A9"); //the range of your todo list. 
  var howMany = activeRange.getNumRows();
  var topCell = activeRange.getRow();
  var rangeTop = toDoRange.getRow();
  var index = topCell - rangeTop; //gives the index of the selected cell
  var rangeArray = toDoRange.getValues();
  rangeArray.splice(index, howMany)

  if ( howMany == 1 ) {
    rangeArray.unshift(activeRange.getValues()[0]); 
  } else { // handle re-inserting multiple row values
    var values = activeRange.getValues();
    for ( var i = values.length - 1 ; i >= 0; i--) {
      rangeArray.unshift(values[i]);
    }
  }
  //Logger.log(rangeArray)
  toDoRange.clearContent();
  toDoRange.offset(0,0,rangeArray.length).setValues(rangeArray);
};

【问题讨论】:

    标签: excel google-apps-script google-sheets


    【解决方案1】:

    试试……

    function arrayShift(){
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sheet = ss.getActiveSheet();
      var activeRange = sheet.getActiveRange();
      var toDoRange = sheet.getRange("A2:A9"); //the range of your todo list. 
      var howMany = activeRange.getNumRows();
      var topCell = activeRange.getRow();
      var rangeTop = toDoRange.getRow();
      var index = topCell - rangeTop; //gives the index of the selected cell
      var rangeArray = toDoRange.getValues();
      rangeArray.splice(index, howMany)
    
      if ( howMany == 1 ) {
        rangeArray.unshift(activeRange.getValues()[0]); // "remove brackets"
      } else { // handle re-inserting multiple row values
        var values = activeRange.getValues();
        for ( var i = values.length - 1 ; i >= 0; i--) {
          rangeArray.unshift(values[i]);
        }
      }
      //Logger.log(rangeArray)
      toDoRange.clearContent();
      toDoRange.offset(0,0,rangeArray.length).setValues(rangeArray);
    };
    

    【讨论】:

    • 谢谢布赖恩!!效果很好!我上次发布的印象是我应该将固定代码放在原始问题中。这看起来很奇怪,就像我在取信一样?另外,在stackoverflow上有提到吗?对不起新手!
    • 下次可以留下原来的问题/代码。仅更新说明。将问题标记为已回答/赞成确实会显示您所怀疑的要使用的内容。
    • 糟糕!抱歉,Brian,不知道以前的代码是什么了。没有不尊重的意思。下次会这样做。再次感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多