Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用onChange()在客户端触发/运行函数。谷歌应用程序脚本_Javascript_Google Apps Script - Fatal编程技术网

Javascript 使用onChange()在客户端触发/运行函数。谷歌应用程序脚本

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

据我所知,google.script.run可以从客户端运行gs代码。那么,是否可以使用onchange在客户端运行/触发函数

我在电子表格中创建了一个侧栏,其中包含一些html代码。例如,我的html代码如下所示:

<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;
}