繁体   English   中英

Google Apps 脚本不起作用?

[英]Google Apps Script not functioning?

我不是巫师,但我一直在尝试用谷歌应用脚本学习一点,我只是对它为什么不起作用感到困惑。 我查看了文档并使用 if + else 脚本引用了其他作品,但我找不到错误。 上下文:E7 是一个复选框,F7 是一个填空。

function testO() {
  var mySS = SpreadsheetApp.getActiveSpreadsheet();
  var getRange = mySS.getRange("E7")
  
  
  if(getRange = true){
    mySS.getRange("E7").setValue("FALSE")
  }
  else{
    mySS.getRange("F7").clearContent()
  }
}

看来您需要花一些时间学习 JavaScript 的基本知识。 请从阅读https://developers.google.com/apps-script/guides/sheets开始,因为它提供了有用的指示,例如,

  • Google Apps 脚本编程语言是 JavaScript
  • 如何读取和写入 Google 表格电子表格。

关于您的代码的细节,

  1. mySs.getRange方法中,使用Sheet1!A1样式引用而不是A1
  2. 在 if 语句中相等的比较表达式中,使用抽象相等==或严格相等===运算符而不是赋值运算符= ,但在这种非常特殊的情况下,使用Range.isChecked()可能会更好。
  3. 有使用复选框的特定方法: Range.isChecked()Range.uncheck()Range.check()

以下是修复脚本的建议:

function testO() {
  var mySS = SpreadsheetApp.getActiveSpreadsheet();
  var getRange = mySS.getRange("Sheet1!E7");
  
  
  if(getRange.isChecked()){
    getRange.uncheck();
  }
  else{
    mySS.getRange("Sheet1!F7").clearContent();
  }
}

笔记:

  • Google Apps 脚本对返回相同类型 object 的某些方法使用相同的方法名称,即Spreadsheet.getRangeSheet.getRange ,但它们可能需要不同的参数,

  • Spreadsheet.getRange可能使用A1Sheet1!A1样式引用。 使用A1时,它将从第一张表中获取单元格A1

  • Sheet.getRange可能使用A1样式,但它会从相应的工作表返回单元格A1

一个简单的例子,有一些解释

function testO() {
  const ss = SpreadsheetApp.getActive();//I like havign access to the spreadsheet as a single variable.  While it may not be important now it might be in the future.
  const sh = ss.getSheetByName("Sheet0");//For clerity sake it is better to identify the sheet you are going to.  In your code you depended upon the fact that the spreadsheet has a default active sheet which is ss.getSheets()[0]
  const rg = sh.getRange("E7");//getRange returns a range no a value
  const v = rg.getValue();//getValue returns a single value
  
  if(v == true){ //= is an assignment == is a comparison 
    sh.getRange("E7").setValue("FALSE");//This is usually the value reserved for an unchecked checkbox
  }
  else{
    rg.clearContent()
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM