我正在开发一款将数据扫描到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);
}
感谢。
答案 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拥有出色的文档,只需按照逻辑顺序了解您希望实现的目标。