在过去的几天里,我发布了几个关于我正在开发的 Google Apps Script Web App 的问题。到目前为止,这里的 Serge 非常有帮助。该脚本的帖子在这里。
我希望在该脚本中添加一列以生成一个 uniqueID 计数器,以便在提交新表单时,计数器将看到以前的 uniqueID 并递增 1。想法将是带有标题行的空白电子表格。脚本在表单提交时运行,看到 A2 为空白并插入 1。下一个提交的表单将看到 A2 中的 2 添加 1 并将 3 放入 A3 等等。
现在我正在处理计数器,将单元格中的数字加 1。我知道当我开发这件作品时,我需要抓住最后一行,然后找到单元格值并添加到,但是因为我是 GAS 的新手,我边走边自学,所以我试图慢慢构建到,你明白了。
这是一个基本的开始,如果这是一个正确的开始方向,我想得到一些反馈..
function counter() {
//Grabs the range and pinpoint cell
var ssRange = SpreadsheetApp.getActiveSheet().getRange(1,1,1,1);
//Grab the cell value of A1
var value = ssRange.getValue();
//if statement to check value in A1 and if it is null, undefined, false, 0, NAN
if (!value) {
//if the cell is null, undefined, false, 0, NAN sets value to 1
var setCell = ssRange.setValue(1);
}
//if not updates the cell by getting the value and adding 1 to it
else {
var updateCell = ssRange.setValue(value + 1);
}
}
编辑(更新代码以使用 .setProperty 和 .getProperty 的 Phil Bozak 提示
如果插入到电子表格中的 MYID 像您提到的那样被手动更改,我仍在测试此代码如何处理。我需要确保 MYID 保持唯一。必须考虑一下.. 这是代码.. 任何反馈表示赞赏!
function counter2() {
//Get the spreadsheet, range, and value of first cell in range
var sSheet = SpreadsheetApp.getActiveSheet();
var ssRange = sSheet.getRange(1,1,1,1);
var ssValue = ssRange.getValue();
var setUniqueID = ScriptProperties.setProperty("MYID",1);
var getUniqueID = ScriptProperties.getProperty("MYID");
//will set value of first cell to 1 if null, undefined, false, 0, NAN etc.. (runs in if //statement)
var setOne = ssRange.setValue(getUniqueID);
if (!ssValue) {
setOne;
}
else {
//This goes back and get the range, lastrow of range, and value of first cell in range of last row & adds 1 to that value
var setLast = sSheet.getRange(lastRow+1,1,1,1).setValue(getUniqueID + 1);
setLast;
}
}