Google apps script 基于if-else条件编辑单元格的公式

Google apps script 基于if-else条件编辑单元格的公式,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我计划创建一个单元格,如果G2中的单元格为空,那么它将从a行复制内容,但如果G列中的单元格更新了其他内容,我不想从a行复制内容。我已经在应用程序脚本中编写了类似的代码,但它不起作用 function getLast(range) { var getResult = function(range) { if (!((range.getNumRows() > 1 && range.getNumColumns() == 1) || (range.getNu

我计划创建一个单元格,如果G2中的单元格为空,那么它将从a行复制内容,但如果G列中的单元格更新了其他内容,我不想从a行复制内容。我已经在应用程序脚本中编写了类似的代码,但它不起作用

function getLast(range) {
    var getResult = function(range) {
        if (!((range.getNumRows() > 1 && range.getNumColumns() == 1) || (range.getNumRows() == 1 && range.getNumColumns() > 1))) {
            throw new Error("Please input one row or one column.");
        }
        var v = Array.prototype.concat.apply([], range.getValues());
        var f = Array.prototype.concat.apply([], range.getFormulas());
        var i;
        for (i = v.length - 1; i >= 0; i--) {
            if (v[i] != "" || f[i] != "") break;
        }
        return i + 1;
    };
    if (Array.isArray(range)) {
        return range.map(function(e) {
            return getResult(e);
        });
    } else {
        try {
            range.getA1Notation();
        } catch (e) {
            throw new Error("Inputted value is not a range.");
        }
        return getResult(range);
    }
}

function formulasheets(){
  var ss = SpreadsheetApp.openByUrl(url);
  var sheet = ss.getSheetByName("USERNAMES");
  sheet.getRange("G2").setFormula('=IF(G2="",A2, ');
  var range1 = sheet.getRange("B:B");
  var fillDownRangecolumnI = sheet.getRange(2, 7, lr-1);
  sheet.getRange("G2").copyTo(fillDownRangecolumnA);
}
为了更好地解释我想要什么,我附上了我的谷歌工作表的图片。有人能帮我吗。非常感谢。


我明白你的问题了,我想试一试,希望对你有用。请参考下面我编辑的代码,我认为最好使用for循环检查是否为空,并避免编写公式:

function formulasheets(){
  var ss = SpreadsheetApp.openByUrl(url);
  var sheet = ss.getSheetByName("USERNAMES");
  for (var x=1;x <= sheet.getLastRow();x++){
    var cell = sheet.getRange(x,7);
    if (cell.isBlank()){
      sheet.getRange(x,1).copyTo(cell);
    }
  }
}
函数公式表(){
var ss=SpreadsheetApp.openByUrl(url);
var sheet=ss.getSheetByName(“用户名”);

对于(var x=1;x这是我想要的。非常感谢您的帮助欢迎,我也喜欢应用程序脚本:)
                                        It should be updated with content in row A
function formulasheets(){
  var ss = SpreadsheetApp.openByUrl(url);
  var sheet = ss.getSheetByName("USERNAMES");
  for (var x=1;x <= sheet.getLastRow();x++){
    var cell = sheet.getRange(x,7);
    if (cell.isBlank()){
      sheet.getRange(x,1).copyTo(cell);
    }
  }
}