用If / Else脚本苦苦挣扎

时间:2017-05-03 01:43:43

标签: google-apps-script google-sheets

在这里苦苦挣扎的初学者,试图让我的剧本完成,而我现在却迷失了方向。让我先发布我的脚本。

function dailyclear(e)
{
  var ss = SpreadsheetApp.getActiveSpreadsheet(); 
  var sheet = ss.getSheetByName('Today');

  sheet.copyTo(ss)
  var nusheet = ss.getSheetByName('Copy of Today')
  var value = nusheet.getRange("B2").getCell(1,1).getValue()
  SpreadsheetApp.setActiveSheet(nusheet)

  Logger.log("Current index of sheet: %s", nusheet.getIndex())
  ss.moveActiveSheet(2);
  nusheet.setName(value);

  //Clear "Today"
  var lastrow = sheet.getLastRow()
  sheet.deleteRows(8, lastrow-7)

  //Set Date Value for "Today"
  var dd = Utilities.formatDate(new Date(), "GMT-5", "MM/dd/yy");
  sheet.getRange("B2").getCell(1,1).setValue(dd);
}

我希望我的脚本要做的是在//清除行之前有一个if / else语句,就像这样......"如果A8中有任何文本那么运行sheet.deleterows(8,lastrow -7),ELSE跳过设置日期。"我希望这是有道理的。基本上我想删除除了前7位以外的所有行,如果在A8中输入了任何数据,否则不要尝试删除任何内容,因为它只会对我产生错误并锁定。

我一直在努力通过网上阅读来自己解决这个问题。任何帮助,将不胜感激。我的工作表链接是https://docs.google.com/spreadsheets/d/1NZxXjMptx6ldzL2CKk6OwJcq_heIv995ZGVeIE59xNc/edit?usp=sharing

感谢您提供的一切和所有内容!

1 个答案:

答案 0 :(得分:1)

我认为这是您希望实现的目标:

function dailyclear() {

    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var ui = SpreadsheetApp.getUi();
    var sheet = ss.getSheetByName('Today');
    var getB2 = sheet.getRange("B2").getValue();

    sheet.copyTo(ss).setName(getB2);

    var nusheet = ss.getSheetByName(getB2);

    Logger.log("Current index of sheet: %s", nusheet.getIndex());
    ss.setActiveSheet(nusheet);
    ss.moveActiveSheet(2);

    var getA8 = sheet.getRange('A8').getValue();

    if (getA8) {

        var numRows = sheet.getMaxRows();

        if (numRows > 8) {
            sheet.deleteRows(8, numRows - 8);
        } else {
            sheet.deleteRow(8);
        }

    } else {

        var newDate = Utilities.formatDate(new Date(), "GMT-5", "MM/dd/yy");
        sheet.getRange("B2").setValue(newDate);
    }
}