我有一個當前的 Google 表格,我想使用 Google 應用程式腳本中內置的資料輸入前端選項卡根據資料輸入表單/選項卡中的一些條目填充表格中的單獨選項卡。
即,如果在第一個條目中選擇了“DeviceID_1”(現在從下拉選單中)并且在第二個條目中選擇了一個特定的月份(也從下拉選單中),當資料被驗證時,然后將其發送到選項卡對應于特定的已命名和現有選項卡,“DeviceID_1-January”。
我已經完成了有關構建資料輸入表單的教程,并將其輸出到名為“資料庫”的單個資料庫選項卡,并按預期作業。我猜,我想要它做的在實作上并不是微不足道的。這是,我猜,真正的編程和功能的開發來驗證輸入并回傳正確的輸出,我有時間學習如何以正確的方式做到這一點,如果針對資源,但目前沒有,知道如何開始。嗯,這并不完全正確。我知道我需要驗證輸入資料,然后創建一個基于輸入資料的函式,如果 (shUserForm.getRange("C6").is????()==true),將提交資料在 getSheetByName("DeviceID_1-Jan") 的表單中;
到目前為止,我認為相關的當前代碼在這里:
if (shUserForm.getRange("C4").isBlank()==true){
ui.alert("Please enter system ID #.");
shUserForm.getRange("C4").activate();
shUserForm.getRange("C4").setBackground('red');
return false;
}
//Validating Device ID
if (shUserForm.getRange("C6").isBlank()==true){
ui.alert("Please enter Device ID.");
shUserForm.getRange("C6").activate();
shUserForm.getRange("C6").setBackground('red');
return false;
}
//Validating Start Date
if (shUserForm.getRange("C8").isBlank()==true){
ui.alert("Please enter Start Date.");
shUserForm.getRange("C8").activate();
shUserForm.getRange("C8").setBackground('red');
return false;
}
//Validating End Date
if (shUserForm.getRange("C10").isBlank()==true){
ui.alert("Please enter End Date.");
shUserForm.getRange("C10").activate();
shUserForm.getRange("C10").setBackground('red');
return false;
}
//Validating Payment
if (shUserForm.getRange("C12").isBlank()==true){
ui.alert("Please enter Payment.");
shUserForm.getRange("C12").activate();
shUserForm.getRange("C12").setBackground('red');
return false;
}
//Validating Location
if (shUserForm.getRange("C14").isBlank()==true){
ui.alert("Please enter Location.");
shUserForm.getRange("C14").activate();
shUserForm.getRange("C14").setBackground('red');
return false;
}
//Validating Delivery Fee
if (shUserForm.getRange("C16").isBlank()==true){
ui.alert("Please enter Delivery Fee.");
shUserForm.getRange("C16").activate();
shUserForm.getRange("C16").setBackground('red');
return false;
}
//Validating Extra Fees
if (shUserForm.getRange("C18").isBlank()==true){
ui.alert("Please enter Extra Fees.");
shUserForm.getRange("C18").activate();
shUserForm.getRange("C18").setBackground('red');
return false;
}
//Validating Parking Expense
if (shUserForm.getRange("C20").isBlank()==true){
ui.alert("Please enter Parking Expense.");
shUserForm.getRange("C20").activate();
shUserForm.getRange("C20").setBackground('red');
return false;
}
//Validating Wash expense
if (shUserForm.getRange("C22").isBlank()==true){
ui.alert("Please enter Wash Expense.");
shUserForm.getRange("C22").activate();
shUserForm.getRange("C22").setBackground('red');
return false;
}
//Validating Time
if (shUserForm.getRange("C24").isBlank()==true){
ui.alert("Please enter Time.");
shUserForm.getRange("C24").activate();
shUserForm.getRange("C24").setBackground('red');
return false;
}
return true;
}
//Function to submit the data to database sheet
function submitData(){
//declare a variable and set the reference of active google sheet
var myGoogleSheet=SpreadsheetApp.getActiveSpreadsheet();
var shUserForm=myGoogleSheet.getSheetByName("Entry Form");
var datasheet=myGoogleSheet.getSheetByName("Database");
//to create the instance of the user-interface environment to use the alert features
var ui=SpreadsheetApp.getUi();
var response=ui.alert("Submit", "Do you want to submit the Data?", ui.ButtonSet.YES_NO);
//checking the user response
if(response==ui.Button.NO){
return;//to exit from this function
}
if (validateEntry()==true){
var blankRow=datasheet.getLastRow() 1; //identify the last blank row
//code to update the data in the spreadsheet
datasheet.getRange(blankRow,1).setValue(shUserForm.getRange("C4").getValue());//System ID #
datasheet.getRange(blankRow,2).setValue(shUserForm.getRange("C6").getValue());//Device ID
datasheet.getRange(blankRow,3).setValue(shUserForm.getRange("C8").getValue());//Start Date
datasheet.getRange(blankRow,4).setValue(shUserForm.getRange("C10").getValue());//End Date
datasheet.getRange(blankRow,5).setValue(shUserForm.getRange("C12").getValue());//Payment
datasheet.getRange(blankRow,6).setValue(shUserForm.getRange("C14").getValue());//Location
datasheet.getRange(blankRow,7).setValue(shUserForm.getRange("C16").getValue());//Delivery Fee
datasheet.getRange(blankRow,8).setValue(shUserForm.getRange("C18").getValue());//Extra Fees
datasheet.getRange(blankRow,9).setValue(shUserForm.getRange("C20").getValue());//Parking Expense
datasheet.getRange(blankRow,10).setValue(shUserForm.getRange("C22").getValue());//Wash Expense
datasheet.getRange(blankRow,11).setValue(shUserForm.getRange("C24").getValue());//time
如果有人將我引導到可能相關的 Google 應用程式腳本站點的站點部分,我想這會讓我到達那里,或者如果有人已經解決了這個問題并有提示,我會全神貫注。我自己做了大量的搜索,但沒有找到任何東西,至少在我目前需要的范圍內沒有找到。
uj5u.com熱心網友回復:
有很多方法可以去這里。這是一種可能性。
假設您已決定使用具有以下用于選擇輸出表的控制元件的資料輸入表單:

然后你可以通過這種方式實作當前資料表的設定:
function onEdit(e) {
const sh = e.range.getSheet();
if(sh.getName() == "Entry Form Sheet" && e.range.columnStart == 2 && e.range.rowStart == 1 && e.value) {
PropertiesService.getDocumentProperties().setProperties('Sheet',e.value);
}
}
function getCurrentDataSheet() {
let name = PropertiesService.getDocumentProperties().getProperty('Sheet');
return SpreadsheetApp.getActive().getSheetByName(name);
}
無論您在何處輸出當前資料表中的一些資料,您都可以使用像 getCurrentDataSheet 這樣的函式來獲取正確的當前資料表,因此請使用示例代碼:
if (shUserForm.getRange("C4").isBlank()==true){
ui.alert("Please enter system ID #.");
getCurrentDataSheet().getRange("C4").activate();
getCurrentDateSheet().getRange("C4").setBackground('red');
return false;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/361448.html
