我有两个单独的脚本,询问用户他们的起步里程(输入第3栏)和结束里程(输入第4栏)。在输入结束里程后,如何获得输入第10栏的总里程?我已经尝试在工作表上输入一个函数但是被下一个数据输入覆盖了。
我的2脚本看起来像这样:
var StartMileage = SpreadsheetApp.getUi().prompt("Please enter Start Mileage.").getResponseText(); var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Retrieval Log P1CU X") var NewLog = ss.getRange(ss.getLastRow(), 3).setValue( StartMileage );
和
var Home = SpreadsheetApp.getUi().prompt("What is your end mileage?").getResponseText(); var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Retrieval Log P1CU X") var NewLog = ss.getRange(ss.getLastRow(), 4).setValue( Home );
我想要的基本总和是' Home'减去' StartMileage'放入第10栏。
脚本设置为在点击按钮时运行,他们必须在其中提交响应,第一个按钮会询问他们的姓名并开始里程,最后一个按钮会询问他们的结束里程,按钮会被点击按顺序,两个提交将提交到同一行。我希望脚本在提交结束里程的同时进行计算,该函数如下所示:
function promptHome() { var Home = SpreadsheetApp.getUi().prompt("What is your end mileage?").getResponseText(); var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Retrieval Log P1CU X") var NewLog = ss.getRange(ss.getLastRow(), 4).setValue( Home ); var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Retrieval Log P1CU X") var NewLog = ss.getRange(ss.getLastRow(), 9).setValue( new Date() ); }
答案 0 :(得分:1)
添加代码以计算并将计算值插入promptHome()
函数。并且没有必要像现在在代码中那样获取表格两次。这是函数的外观:
function promptHome() {
var Home = SpreadsheetApp.getUi().prompt("What is your end mileage?").getResponseText();
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Retrieval Log P1CU X");
var startMileage = parseInt(ss.getRange(ss.getLastRow(), 3).getValue(), 10);
var diffMileage = parseInt(Home, 10)-startMileage;
ss.getRange(ss.getLastRow(), 4).setValue(parseInt(Home, 10));
ss.getRange(ss.getLastRow(), 9, 1, 2).setValues([[new Date(), diffMileage]]); // insert values into cols 9 and 10 at the same time, so save time
SpreadsheetApp.flush(); // commit the changes
}
当然,只有当您的用户仅在提示中输入数字时,它才能正常工作。但是如果你允许他们输入任何他们想要的东西(即“15mi”或“shamalamamumu”)并且不验证数据,那么你的问题比功能不起作用更大:)你还应该使用Lock Service用于防止并发数据写入的代码。