我正在使用 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;
}
只要最后一个单元格的值未提交,它就仅存在于用户浏览器会话的客户端上,并且无法从 Google Sheets/Apps 脚本或 Sheets API 中检索
想想使用同一个电子表格的用户。在用户 A 提交更改之前,用户 B 将不会在他的电子表格版本中看到这些更改,也无权提交这些更改。
因此,如果您希望用户在单击按钮时可以检索修改,唯一的方法是在按下按钮之前提示用户提交更改。你可以这样做,例如单击按钮上会显示一条警报/消息,询问用户是否在单击按钮之前提交了更改。
或者,您可以考虑没有按钮的实现。
例如,您可以将脚本发布为WebApp https://developers.google.com/apps-script/guides/web并将 WebApp Url 的超链接粘贴到充当按钮的单元格中:
这可能看起来不如实际按钮美观,但是通过单击按钮单元格,用户最后的更改将自动提交。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)