【发布时间】:2020-01-05 22:26:43
【问题描述】:
我有一个按钮(在 HTML 中),它调用函数 LoginInfoInput(...) 并重定向到页面 (href="..."),即:
<a onclick="LoginInfoInput('<?!= userID; ?>')" href="<?= ScriptApp.getService().getUrl(); ?>?v=form&userID=<?!= userID; ?>" class="waves-effect waves-light btn-large">Log In</a>,
LoginInfoInput(...) 是一个 javascript 函数,它将触发我的谷歌应用脚本 (GS) 函数。然后触发的 GS 函数会将数据插入到我的电子表格中。同时,重定向的 URL 将通过我的 doGet() 函数。为了确定结果,它从我的电子表格中获取数据。我的问题是,在重定向页面采取行动之前,电子表格并不总是及时更新。
我解决问题的尝试是使用 while 循环等待/暂停。但是,当 while 循环处于活动状态时,数据在电子表格中变得可用(至少在视觉上)不起作用,即,无法访问感兴趣的数据。请注意,我还在 while 循环期间添加了更新存储电子表格数据的变量的选项(调用 SpreadsheetApp.openByUrl(url)),但是没有任何改进。
更新
我的LoginInfoInput()(在JavaScript中)如下:
function LoginInfoInput(userID){
var userLO = document.getElementById("id_loginLO").value;
var userPassword = document.getElementById("id_password").value;
google.script.run.LoginAdd(userLO, userPassword, userID);
}
解决方案
我的解决方案结合了@IMTheNachoMan see below 提供的答案以及我发现如果不强制更新数据,GS 中添加到电子表格的数据可能会延迟。要强制更新,请在 GS 函数中将数据插入电子表格后调用 SpreadsheetApp.flush(); link。据我了解,在我更改基于 (GS) 的页面之前,数据需要位于我的电子表格中,因为它会在调用基于 (GS) 的页面时尝试访问电子表格,而不是在我调用电子表格时当数据可用时(通过等待/使用 while 循环)。
【问题讨论】:
-
感谢您的回复。对于给您带来的不便和我糟糕的英语水平,我深表歉意。我可以理解我的回答不适合你的实际情况。所以我必须删除我的答案,因为我不想混淆其他用户。我为我糟糕的技能深表歉意。
-
嗨@Tanaike,没问题。不过,我确实认为你提出了一个有价值的建议。希望如果我一切都正确,我将能够很快发布解决方案。可能不像我最初预期的那样,但这将解决重定向页面问题。在那个时候(或之前),你也许可以提出一些你自己可以自豪地提出的建议。总而言之,我很欣赏你的回答:)。
-
感谢您的回复。由于我的英语水平不佳,我无法正确理解您的目标。我想我必须为此道歉。另一方面,从你的问题,我可以学习。我想学习越来越多。也谢谢你。当您的问题得到解决时,我很高兴。
标签: url redirect google-apps-script priority-queue buttonclick