如果在谷歌应用程序脚本中如何使用?

时间:2017-11-20 09:30:36

标签: javascript if-statement google-apps-script google-sheets

我正在开发一款将数据扫描到Google表格中的应用。我有两张纸:sheet1和sheet2。在sheet1中,在执行扫描后将数据输入到其中。但是在输入扫描数据之前,我想在输入数据之前执行if函数来检查sheet2中是否存在类似类型的数据。如果没有,则会显示一条消息,例如“数据库中没有这样的人”。我还想指定列来检查sheet2中的相似性,例如A2:A100 以下是脚本代码

function doGet(e){
var ss = SpreadsheetApp.openByUrl("google sheet url");
//Give your Sheet name here
var sheet = ss.getSheetByName("Sheet1");

return insert(e,sheet);

}

function doPost(e){
var ss = SpreadsheetApp.openByUrl("google sheet url");
//Give your Sheet name here
var sheet = ss.getSheetByName("Sheet1");

return insert(e,sheet);

}



function insert(e,sheet){

 // reciving scanned data from client i.e android app
 var scannedData = e.parameter.sdata;
 var d = new Date();
 var ctime= d.toLocaleString();

 sheet.appendRow([scannedData,ctime]);

 return ContentService
.createTextOutput("Success")
.setMimeType(ContentService.MimeType.JAVASCRIPT);  


}

感谢。

1 个答案:

答案 0 :(得分:1)

Google Apps脚本实质上是JavaScript,具有不同的库。所以你的if陈述基本上与那里的陈述完全相同:

if (a1 == a2) {
  a1 = 0
}
else if (a1 != a3) {
  a1 = 1
}
else {
  a1 = 'String'
}

检查逻辑运算符,了解如果您不熟悉它可以做什么,并阅读有关switch声明的内容,因为它有时也可用来代替if声明(不是在你的情况下,但是当你谈论这个主题时,不妨阅读它。)

修改

根据您的评论,为了比较特定列中的数据,它非常简单,并且有多种方法可以做到这一点。将其视为结构Spreadsheet → Sheet → Range → Value。因此,如果您已经拥有sheet的对象,则可以range = sheet1.getRange(1,1)来获取单元格A1。或者您可以为getRange('A1')使用A1表示法。如果您的范围是单个单元格,则可以执行range.getValue(),这将返回单元格内的值。

现在你想要查找数据是否存在于另一个工作表中,1逐1将无效,因为getValue()将非常快速地膨胀脚本。相反,您可能想要vals = sheet2.getDataRange().getValues()。这将返回工作表内所有值的2D数组。如果您只想检查特定列,并且您知道自己不关心其余列,则只需将getDataRange()替换为.getRange(C:C)或类似getRange(1, 3, sheet2.getLastRow(), 1)

然后,您只需使用vals[rowNum][colNum]循环遍历2D数组。

如果将值手动添加到 1单元格并且脚本使用onEdit触发器触发,您还可以直接从事件对象e获取值。在onEdit(e)

阅读getRange()(也请阅读下面的内容)以及getValue()(以及下面的getValues)。 Google拥有出色的文档,只需按照逻辑顺序了解您希望实现的目标。