繁体   English   中英

如何在运行脚本之前提交在活动单元格中所做的更改? (谷歌表格/谷歌应用脚本)

[英]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;
}

只要最后一个单元格的值没有提交,它就只存在于用户浏览器会话的客户端,无法从 Google Sheets / Apps Script 或 Sheets API 检索

想想处理同一个电子表格的用户。 在用户 A 提交他的更改之前,用户 B 不会在他的电子表格版本中看到它们,他也没有任何权力提交这些更改。

因此,如果您希望在单击按钮时可以检索用户修改 - 唯一的方法是在按下按钮之前提示用户提交其更改。 您可以这样做,例如,在单击按钮时显示警报/消息,询问用户是否在单击按钮之前提交了更改。

或者,您可以考虑一个没有按钮的实现。

例如,您可以将脚本发布为WebApp ,并将指向 WebApp Url 的超链接粘贴到充当按钮的单元格中:

在此处输入图片说明

这可能看起来不如实际按钮美观,但是通过单击按钮单元格,用户的最后更改将自动提交。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM