[英]How to commit changes made in active cell before running script? (Google Sheets / Google Apps Script)
我正在使用 Google Apps 脚本在 Google 表格中创建提交表单。 表单在一个页面上,提交内容被移动到第二个隐藏页面。 当用户填写表格后,他们按下提交页面上的按钮以激活脚本。
我遇到的问题是,当用户填写最后一个单元格然后单击按钮时,输入到最后一个单元格的数据似乎还没有提交到页面,因此没有被脚本(使用sheet_sub.getRange("C7").getValue();
)。 我试图 act 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;
}
想想处理同一个电子表格的用户。 在用户 A 提交他的更改之前,用户 B 不会在他的电子表格版本中看到它们,他也没有任何权力提交这些更改。
因此,如果您希望在单击按钮时可以检索用户修改 - 唯一的方法是在按下按钮之前提示用户提交其更改。 您可以这样做,例如,在单击按钮时显示警报/消息,询问用户是否在单击按钮之前提交了更改。
或者,您可以考虑一个没有按钮的实现。
例如,您可以将脚本发布为WebApp ,并将指向 WebApp Url 的超链接粘贴到充当按钮的单元格中:
这可能看起来不如实际按钮美观,但是通过单击按钮单元格,用户的最后更改将自动提交。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.