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 Google应用程序脚本:为空单元格分配零_Google Apps Script_Google Sheets_Google Sheets Macros - Fatal编程技术网

Google apps script Google应用程序脚本:为空单元格分配零

Google apps script Google应用程序脚本:为空单元格分配零,google-apps-script,google-sheets,google-sheets-macros,Google Apps Script,Google Sheets,Google Sheets Macros,我是谷歌应用程序脚本的新手,尝试根据列的当前值和标志设置列的值 如果Flag=Y,则C1中的值为: C1列值=23.9895 期望值=23 如果Flag=N,则将C1中的现有值四舍五入: C1列值=23.9895 期望值=24 如果标志为Y或N,则写入0: C1列值=空单元格 期望值=0 我已经实现了下面的代码。它部分地起作用了。前两种方案运行良好,但第三种方案失败。 当我尝试设置零时,我得到了#NUM错误,而不是零。不知道怎么做 ... do { sRange = "Q" + iCt;

我是谷歌应用程序脚本的新手,尝试根据列的当前值和标志设置列的值

  • 如果Flag=Y,则C1中的值为:

    C1列值=23.9895
    期望值=23

  • 如果Flag=N,则将C1中的现有值四舍五入:

    C1列值=23.9895
    期望值=24

  • 如果标志为Y或N,则写入0:

    C1列值=空单元格
    期望值=0

  • 我已经实现了下面的代码。它部分地起作用了。前两种方案运行良好,但第三种方案失败。
    当我尝试设置零时,我得到了
    #NUM错误,而不是零。不知道怎么做

    ...
    do {
      sRange = "Q" + iCt;
      if ((gDecimalInPrice == "Y") && (!isNaN(sheet.getRange(sRange).getValue()))) {
        sheet.getRange(sRange).setValue(Math.abs(parseInt(sheet.getRange(sRange).getValue())));
      } else if ((gDecimalInPrice == "N") && (!isNaN(sheet.getRange(sRange).getValue()))) {
        sheet.getRange(sRange).setValue(Math.abs(Math.round(sheet.getRange(sRange).getValue())));
      } else {
        sheet.getRange(sRange).setValue(sheet.getRange(sRange).getValue());
      }
      iCt = iCt + 1;
    } while (iCt <= gRowCt);
    
    。。。
    做{
    sRange=“Q”+iCt;
    if((gDecimalInPrice==“Y”)&(!isNaN(sheet.getRange(sRange.getValue())){
    sheet.getRange(sRange).setValue(Math.abs(parseInt)(sheet.getRange(sRange.getValue()));
    }如果((gDecimalInPrice==“N”)&&(!isNaN(sheet.getRange(sRange.getValue())){
    sheet.getRange(sRange).setValue(Math.abs(Math.round)(sheet.getRange(sRange.getValue()));
    }否则{
    sheet.getRange(sRange).setValue(sheet.getRange(sRange).getValue());
    }
    iCt=iCt+1;
    
    }而(iCt通过批处理操作(和后续操作)执行此操作的速度要快得多。将这些操作转换为“2D”JavaScript数组(一组值数组),然后您可以在内存中执行所有逻辑,而不是重复地从

    和往常一样,您应该通过查看Stackdriver日志(可通过脚本编辑器的“查看”菜单访问)来监控宏和触发函数的错误

    function foo() {
      const wb = SpreadsheetApp.getActive();
      const sheet = wb.getSheetByName("the sheet name");
      if (!sheet) throw new Error("Sheet with that name is missing");
    
      const lastRow = sheet.getLastRow();
      const flags = sheet.getRange("A1:A" + lastRow).getValues();
      const valueRange = sheet.getRange("Q1:Q" + lastRow);
    
      const newValues = valueRange.getValues().map(function (row, i) {
        return row.map(function (value) {
          var flag = flags[i][0];
          if (!flag || (value && isNaN(value))) // No "Y" or "N", or value is non-nullstring non-number, so return value as-is
            return value;
          else if (flag === "Y")
            return value ? Math.floor(parseFloat(value)) : 0;
          else if (flag === "N")
            return value ? Math.round(parseFloat(value)) : 0;
          else // Unknown flag value
            return value;
        });
      });
      // Write all processed values at once
      valueRange.setValues(newValues);
    }