我正在使用 Google Apps 腳本在 Google 表格中創建提交表單。表單在一個頁面上,提交被移動到第二個隱藏頁面。當用戶填寫表單后,他們在提交頁面上按下一個按鈕以激活腳本。
我遇到的問題是,當用戶填寫最后一個單元格然后單擊按鈕時,輸入到最后一個單元格的資料似乎還沒有提交到頁面,因此沒有被腳本(使用sheet_sub.getRange("C7").getValue();)。我試過activate()另一個單元格 和flush(),但這似乎不起作用。關于腳本的所有其他內容都是功能性的。
我如何確保將資料保存到作業表中以便我可以訪問它?預先感謝您的幫助。
編輯:包括下面的代碼
function submitNomination() {
var sheet_sub = getSheet("Submission Form");
var sheet_list = getSheet("List of Nominations");
// Find last row in list
var lastRow = sheet_list.getRange("A1").getNextDataCell(SpreadsheetApp.Direction.DOWN).getRow();
// Grab values from submission form
var nominee = sheet_sub.getRange("C5:F5").getValue();
var nominator = sheet_sub.getRange("C6:F6").getValue();
var category = sheet_sub.getRange("C7:F7").getValue();
var reason = sheet_sub.getRange("C8:F12").getValue();
// Enter values into the list
sheet_list.getRange('R' (lastRow 1) 'C1').setValue(Utilities.formatDate(new Date(), "America/Detroit","yyyy-MM-dd HH:mm:ss"));
sheet_list.getRange('R' (lastRow 1) 'C2').setValue(nominee);
sheet_list.getRange('R' (lastRow 1) 'C3').setValue(nominator);
sheet_list.getRange('R' (lastRow 1) 'C4').setValue(reason);
sheet_list.getRange('R' (lastRow 1) 'C5').setValue(category);
// Clear submission form
sheet_sub.getRange("C5:F12").clearContent();
}
function getSheet(sheetName){
var sheet = SpreadsheetApp.getActive().getSheetByName(sheetName);
return sheet;
}
uj5u.com熱心網友回復:
只要最后一個單元格的值沒有提交,它就只存在于用戶瀏覽器會話的客戶端,無法從 Google Sheets / Apps Script 或 Sheets API 檢索
想想處理同一個電子表格的用戶。在用戶 A 提交他的更改之前,用戶 B 不會在他的電子表格版本中看到它們,他也沒有任何權力提交這些更改。
因此,如果您希望在單擊按鈕時可以檢索用戶的修改 - 唯一的方法是在按下按鈕之前提示用戶提交他的更改。您可以這樣做,例如,在單擊按鈕時顯示警報/訊息,詢問用戶是否在單擊按鈕之前提交了更改。
或者,您可以考慮一個沒有按鈕的實作。
例如,您可以將腳本發布為
這可能看起來不如實際按鈕美觀,但是通過單擊按鈕單元格,用戶的最后更改將自動提交。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/343967.html
