小编Ala*_*lls的帖子

Google Apps脚本location.reload在网络应用中

我使用的是GAS网络应用,当用户执行某些操作(例如点击特定的div)时,该应用需要刷新其内容。

在客户端,我有一个从onclick调用的脚本

google.script.run.withSuccessHandler(refreshCallback).myServersideFunction();

function refreshCallback(roomsPlus) {
    var statusDiv = document.getElementById("status");
    statusDiv.innerHTML = "Reloading...";
    window.location.reload(true);
};
Run Code Online (Sandbox Code Playgroud)

状态div更改为“正在重新加载...”,因此我知道回调已被调用,但随后它从未重新加载页面。Caja或google apps脚本会禁用页面刷新吗?还有另一种刷新页面的方法吗?

html javascript reload window.location google-apps-script

6
推荐指数
2
解决办法
3749
查看次数

确定/查找HTML DIV元素是否为空或未使用JavaScript

还有一篇文章可能已经回答了我的问题.为了找到这个帖子,我需要搜索child nodes或者children.但问题是,我当时不知道子节点或HTML子节点是什么.

这不是一个jQuery问题.

我的问题是:如何确定HTML元素是空的还是不使用?例如:

<div id="UserRegistration"></div>
Run Code Online (Sandbox Code Playgroud)

以上<div>元素没有内容.与此相反:

<div id="UserRegistration">
    <label>Password:</label>
    <input type="password" id="password" placeholder="Your New Password" required maxlength="32"/>
    <label>Verify Password:</label>
    <input type="password" name="ReEnterPassword" id="reenterpassword" required maxlength="32"/><br/>  
</div>
Run Code Online (Sandbox Code Playgroud)

我故意将元素留空,然后在用户单击菜单选项卡时将HTML注入其中.但是如果用户多次单击菜单项,我不想多次注入相同的HTML.为了避免这种情况,我希望代码确定元素是否已经注入了内容.我想使用Web API接口和JavaScript.使用添加内容.innerHTML

document.getElementById('UserRegistration').innerHTML=VariableWithRetreivedContent;
Run Code Online (Sandbox Code Playgroud)

当用户单击Register菜单选项卡时,将运行一个函数.我已经尝试使用它来确定是否已添加内容,但它不起作用:

function goToRegistration(ElmtToGoTo, FileToGet) {
    //Use getElementById to get info from the ElmtToGoTo DIV
    // and put info into the el variable
    var el = document.getElementById(ElmtToGoTo);
    alert(el.value);
    // If element is already filled quit
    if (el.value === undefined || el.value === …
Run Code Online (Sandbox Code Playgroud)

html javascript dom

5
推荐指数
1
解决办法
1万
查看次数

使用Google Apps脚本覆盖图像文件

我可以使用Google Apps脚本覆盖图像文件吗?我试过了:

file.setContent(newBlobImage);
file.replace(newBlobImage);
Run Code Online (Sandbox Code Playgroud)

这些都不奏效. .setContent()将删除文件中的任何数据,看起来它可能只是将变量名称写为文本,或类似的东西.我假定这两个.setContent().replace()是指文本文档,也许这就是为什么他们不工作.

如果它是文本文件或电子表格,我可以清除它,然后添加新内容.

我可以删除文件,然后创建一个新文件,但如果有其他方法,我宁愿不要.

如果我写一个具有相同名称的文件,它将不会覆盖现有文件,它会创建另一个具有相同名称的文件.

我能够删除文件的唯一方法是使用,DocsList并且我创建图像文件的唯一成功是DriveApp.所以我必须删除文件DocsList,然后创建另一个文件DriveApp.

好吧,我已经弄清楚如何删除文件而不将其发送到垃圾箱,所以我不需要在以后清理垃圾.Google Drive SDKApps脚本的内部有一个remove方法,它没有将文件发送到垃圾箱,它刚刚消失.

var myFolder = DriveApp.getFolderById('3Bg2dKau456ySkhNBWB98W5sSTM');

thisFile = myFolder.getFilesByName(myFileName);

while (thisFile.hasNext()) {
  var eachFile = thisFile.next();
  var idToDLET = eachFile.getId();
  Logger.log('idToDLET: ' + idToDLET);

  var rtrnFromDLET = Drive.Files.remove(idToDLET);
};
Run Code Online (Sandbox Code Playgroud)

所以,我正在组合DriveApp服务和DriveAPI删除文件而不将其发送到垃圾箱.在DriveAPI卸下摆臂需要的文件编号,但我没有文件ID,所以文件可以通过名字查找,然后将文件ID检索,然后ID用于删除该文件.所以,如果我找不到覆盖文件的方法,我至少可以删除旧文件,而不会丢弃它.

我刚才注意到,DriveAPI服务有一个PatchUpdate选择.

.patch(resource, fileId, optionalArgs)
Run Code Online (Sandbox Code Playgroud)

Google文档修补程序 更新文件元数据.

resourcearg是可能的元数据.这fileId …

google-apps-script google-drive-api

5
推荐指数
1
解决办法
2710
查看次数

如何将 doGet(e) 参数传递给另一个函数?

我能够从已发布的应用程序脚本的 url 捕获变量,但我不确定如何将该变量传递给另一个函数。如果包含变量,下面的脚本将不会运行 onRun 函数。我的目标是传递 2 个变量,但一次传递一个问题。

function doGet(e) {

    var id = e.parameter.id;
    var minutes = e.parameter.min;


  var html = '<p>'
  +'<button onClick=google.script.run.onRun('+id+')>Run</button>' // Does not work when clicked
    +'<button onClick=google.script.run.onRun()>Run without parameter</button>'
  +'<button onClick=google.script.run.turnOn()>On</button>'
  +'<button onClick=google.script.run.turnOff()>Off</button>'
  +'</p>';

  return HtmlService.createHtmlOutput(html).setSandboxMode(HtmlService.SandboxMode.IFRAME);

}

function onRun(id){
  Logger.log("id: "+id); 
}
Run Code Online (Sandbox Code Playgroud)

javascript google-apps-script

5
推荐指数
2
解决办法
3142
查看次数

运行Google Script网络应用后关闭窗口?

我制作了一个小型的Web应用程序,当用户单击电子表格中的链接时,该应用程序会打开。该链接会将他们带到Web应用程序,从而对电子表格进行更改。我希望浏览器窗口在代码完成运行后自动关闭。

function doGet(e){
  // code make changes to spreadsheet

 // here I want browser window to close

  return HtmlService.createHtmlOutput(uniqueid + " is marked complete");
}; 
Run Code Online (Sandbox Code Playgroud)

感谢帮助

javascript google-sheets google-apps-script

5
推荐指数
1
解决办法
4555
查看次数

谷歌未在谷歌脚本中定义 - 错误

我从使用 google.visualization 创建表格的 google 脚本中收到错误“未定义 google”。

你如何添加对谷歌脚本的引用,如果我让它在脚本中运行,我还必须将它添加到我的谷歌网站吗?我会把我的脚本放在下面。

<script type="text/javascript" src="https://www.google.com/jsapi"></script>

  function doGet() {

    drawTable()

  }
function drawTable() {
  var data = new google.visualization.DataTable();
  data.addColumn('string', 'Name');
  data.addColumn('number', 'Salary');
  data.addColumn('boolean', 'Full Time');
  data.addRows(1);
  data.setCell(0, 0, 'John');
  data.setCell(0, 1, 10000, '$10,000');
  data.setCell(0, 2, true);

  var table = new google.visualization.Table(document.getElementById('table_div'));
  table.draw(data, {showRowNumber: true});

  google.visualization.events.addListener(table, 'select', function() {
    var row = table.getSelection()[0].row;
    alert('You selected ' + data.getValue(row, 0));
  });
}
Run Code Online (Sandbox Code Playgroud)

javascript runtime-error google-sites google-apps-script

5
推荐指数
1
解决办法
4433
查看次数

强制要求授权 onOpen()(强制弹出)

总结:是否可以在 onOpen() 上请求授权?

详细版本:我有一个带有按钮的电子表格,可以分发给很多人。当按下任何按钮时,会调用一些需要权限的函数,因此 Google Apps 脚本会显示此弹出窗口:

在此处输入图片说明

这被接受后,一切运行良好,因为它现在有授权。但是,当打开工作簿时,我想在按下按钮之前运行需要权限的东西。但是,如果您将需要授权的代码放入 onEdit 或 onOpen 函数中,默认情况下它会在没有特权的情况下运行并中途崩溃,而不是显示弹出窗口并请求权限。

以下是一些示例代码 - 崩溃而不是请求创建触发器的权限(也适用于 CalendarApp 等):

function onOpen(e) {
  Browser.msgBox("This is shown to the user");
  try {
    ScriptApp.newTrigger('someFunction').forSpreadsheet(SpreadsheetApp.getActiveSpreadsheet()).onEdit().create();
  }
  catch (e) {
    Browser.msgBox(e);
  }
  Browser.msgBox("This message is never shown to the user if there is no try catch because it crashes");
}
Run Code Online (Sandbox Code Playgroud)

permissions authorization google-sheets google-apps-script

5
推荐指数
1
解决办法
4044
查看次数

如果将表单设置为收集电子邮件,则通过 Google Apps 脚本提交 Google 表单将失败

通过 Apps 脚本提交表单时,如果表单设置为收集用户电子邮件以进行回复,则代码将失败并显示错误:

“抱歉,无法提交表单回复。请等待几分钟,然后重试。”

我认为谷歌可能已经改变了一些东西,因为去年运行的代码今年不起作用。

错误指向代码中的“提交”行。或者有时,代码运行,但仍然没有出现在工作表中,或者在表单本身的“响应”中。

如果我关闭收集电子邮件的选项,它运行良好,我会在 Google 表格中看到提交,只是没有电子邮件地址。

我设置了一个测试表单,将其附加到一个新的谷歌表以供回复,并粘贴到我的代码中:

function codeVoteDoVoteByForm()
{
  
  // Get the Yes/No Google form
  var myForm = FormApp.openById('File ID Here')

  // Get a list of questions on it
  var questions = myForm.getItems()
 
  // Get question 0 (only one on this form) and mark it as multiple choice
  var qt = questions[0].asMultipleChoiceItem()
  
  // Set the users vote
  var qr = qt.createResponse("I am here")
  
  //Create the response
  var FormResponse = myForm.createResponse()
  var testemail = FormResponse.getRespondentEmail()
  // Submit …
Run Code Online (Sandbox Code Playgroud)

form-submit google-apps-script google-forms

5
推荐指数
1
解决办法
2186
查看次数

100% 时的 Google Cloud Platform 计算错误率图表

我的 Google Forms 插件附加了一个 Google Cloud Platform (GCP) 项目,并启用了各种 API。GCP API 和服务仪表板有一个流量和错误图表。流量图和错误图都显示一条线表示“计算”,“计算”错误率为 100%。但我不知道这是从哪里来的。附件是我的 GCP API 和服务页面的图像。它显示了我已启用的 API。我不记得为“计算”启用任何东西。并且没有任何关于“计算”的 API。任何信息,将不胜感激。

Google Cloud Platform 计算流量

鼠标悬停错误计算机

google-api google-compute-engine google-cloud-platform google-compute-api

5
推荐指数
0
解决办法
174
查看次数

资源 - >当前项目触发器已从Apps脚本代码编辑器中消失

我使用Resources->当前项目触发器来控制某些项目何时执行.例如,我的一些项目每天凌晨4点左右就会更新电子表格.现在当我单击Resources时,当前项目触发器选项消失了.发生了什么?这个更改是在最后一天左右进行的,因为上次我正在处理一个项目.现在它消失了.

google-apps-script

4
推荐指数
1
解决办法
3828
查看次数