Javascript 使用onChange()在客户端触发/运行函数。谷歌应用程序脚本
据我所知,google.script.run可以从客户端运行gs代码。那么,是否可以使用onchange在客户端运行/触发函数 我在电子表格中创建了一个侧栏,其中包含一些html代码。例如,我的html代码如下所示:Javascript 使用onChange()在客户端触发/运行函数。谷歌应用程序脚本,javascript,google-apps-script,Javascript,Google Apps Script,据我所知,google.script.run可以从客户端运行gs代码。那么,是否可以使用onchange在客户端运行/触发函数 我在电子表格中创建了一个侧栏,其中包含一些html代码。例如,我的html代码如下所示: <div> <p id="apk">Your APK</p> </div> 我的gs代码: function onChange(e){ var activeSheet = e.source.getActi
<div>
<p id="apk">Your APK</p>
</div>
我的gs代码:
function onChange(e){
var activeSheet = e.source.getActiveSheet();
var lr = activeSheet.getRange("F11").getDataRegion().getLastRow();
var getApk = activeSheet.getRange(lr,6).getValue();
return getApk;
}
如您所见,我试图获取getApk值并在我的段落标记中更新它。我希望它在用户更改/编辑范围后自动发生,而无需单击html代码中的任何按钮。现在我被困在这里了。知道怎么做吗?提前谢谢 无法在服务器端触发器上更改应用程序脚本项目的客户端
相反,您可以做的是web轮询,即通过调用google.script.run with以近距离刷新客户端内容
样本:
代码.gs
函数getValue{
var sheet=SpreadsheetApp.openByIdXXXXXX.getSheetByNameYYY;
var lr=sheet.getRangeF11.getDataRegion.getLastRow;
var getApk=sheet.getRangelr,6.getValue;
返回getApk;
}
index.html
函数轮询{
setIntervalmyFunction,2000年;
}
函数myFunction{
var lob=document.getElementByIdmySelect.value;
google.script.run.withSuccessHandlerchangeApk.getValue;
}
函数更改APKGETAPK{
document.getElementByIdapk.innerHtml=getApk;
}
您的apk
根据您的实现,您还需要一个doGet函数来为您的应用程序部署或创建HTML输出。返回getApk的是什么;做没有什么可以挽回的了。它被触发了。在回答您的问题时,不是直接从客户端调用它。@MetaMan它将从工作表中获取值并将值返回客户端。哦,我明白了,我也这么认为。谢谢不会的,因为in是由触发器调用的,所以也没有什么可以返回的。也许我错误地认为它是由触发器调用的。onChangee函数是否由触发器调用?如果是,那么就没有任何东西可以返回,服务器端也没有文档对象模型。这根本没有任何意义。@ziganotschka谢谢!但是,如果有多个用户使用电子表格,这不是会导致电子表格延迟吗?可能会稍微延迟一点,但您可以通过减少轮询频率来减少影响,例如每10秒而不是每2秒轮询一次。
function onChange(e){
var activeSheet = e.source.getActiveSheet();
var lr = activeSheet.getRange("F11").getDataRegion().getLastRow();
var getApk = activeSheet.getRange(lr,6).getValue();
return getApk;
}