标签: google-apps-script

在保留受保护范围的同时制作电子表格的副本

我希望这不会让我失分,但我一直在到处寻找,但找不到答案:

  1. 我有一个受保护范围的电子表格。
  2. 我复制了一份电子表格。
  3. 受保护的范围在副本中消失了。

有没有办法在新副本中保留受保护的范围?

如果不可能,也许使用

var protection = spreadsheet.getRange('D1:G9').protect();
Run Code Online (Sandbox Code Playgroud)

在新副本上?

但是后来我不知道如何将它分配给新副本,因为脚本将在原始电子表格中,并且电子表格的副本在创建之前没有 Id ...

google-sheets google-apps-script

0
推荐指数
1
解决办法
901
查看次数

我可以使用 Google 应用脚本来开发 google chrome 扩展吗

我们可以将 google app-script 代码发布到 chrome 扩展工具中吗?到目前为止,我们从 app-script 开发了一个 web 应用程序,它作为一个 web 应用程序工作。需要做什么才能将其从 google app-script Editor 转换为 chrome 扩展。对有价值的建议表示感谢。

google-chrome-extension google-apps-script

0
推荐指数
1
解决办法
498
查看次数

为什么当我按 Enter 时我的脚本会冻结?

大多数附加组件都很好,但是每当我按 Enter 键时(在我看来,这是提交表单的最常见方式,例如登录表单),但它所做的只是空白。

我试过onkeydown像这样链接脚本:

<div onkeydown="handle(event)">blagh blagh blagh</div>
Run Code Online (Sandbox Code Playgroud)

但我仍然得到相同的结果:

<html>
<form id='myForm' style="font-family:Georgia;">

<table>
<tr><td><h2>Enter your Password</h2></td></tr>
<tr><td><p>DO NOT HIT ENTER ON YOUR KEYBOARD!!!!!</p></td></tr>
<tr><td><input name='password' type='password' value="" onkeypress="handle(event)"></td></tr>
<tr><td><div id="submitbuttcontainer"><img id="submitloader" style="display:none;" src='https://lh6.googleusercontent.com/-S87nMBe6KWE/TuB9dR48F0I/AAAAAAAAByQ/0Z96LirzDqg/s27/load.gif' /><input id="submitbutt" type='button' onclick='showWorking();google.script.run.withSuccessHandler(onSuccess).decodeForRequest(document.getElementById("myForm"));' name="Submit" value="Submit"></div></td></tr>
</table>

</form>
<script>
function onSuccess(obj) {
  document.getElementById('submitbutt').style.display="block";
  document.getElementById('submitloader').style.display="none";
  if(obj.status == 'success') {
    google.script.host.closeDialog();
    browser.msgbox('Access Granted', browser.buttons.OK)
   }
   else { 
    browser.msgbox('ALERT!!','!OOF!','Incorrect Password. Please retry', browser.buttons.OK);
   }
}
function showWorking() {
  document.getElementById('submitbutt').style.display="none";
  document.getElementById('submitloader').style.display="block";
}

function handle(e){
        if(e.keyCode === 13)
document.getElementById('submitbuttcontainer').click(); …
Run Code Online (Sandbox Code Playgroud)

forms web-applications google-sheets google-apps-script

0
推荐指数
1
解决办法
156
查看次数

AppScript:如何创建上传表单?

我正在使用 AppScript 开发 Gmail 插件。我的目标是创建类似于下图的东西。任何提示?

上传图片

google-apps-script gmail-addons

0
推荐指数
1
解决办法
295
查看次数

谷歌表脚本,在 30 秒后超时

我创建了一个 scrpit 来将从 Excel 复制的时间转换为正确的格式。
因为当我将 12.30、09.34、07.40 或 08.00 粘贴到 Google 表格中时,它们最终会变成 12.3、9.34、7.4 和 8。某些表事件包含时间格式,如 1230、934 或 740,因此我也必须解决该问题。这是我的代码。

function onEdit(event) {
  if (event.range.getColumn() == 3 ) {
    for(var i = 1; i<= range.getNumRows() ; i++){
      var r = range.getCell(i, 1);
      var rvalue = r.getValue();
      var rvalues = rvalue.toString();
      var rvalength = rvalues.length;
      if (rvalue != ""){
        if (rvalength == 3) {
          if (parseInt(rvalues.substring(0,2))>24) {
            r.setValue(rvalues.substring(0,1)+"."+rvalues.substring(1,3));
          }
          else
          {
            r.setValue(rvalues.substring(0,2)+"."+rvalues.substring(2,3));
          }
        }
        else if ( rvalength == 4 ) {
          r.setValue(rvalues.substring(0,2)+"."+rvalues.substring(2,4)); …
Run Code Online (Sandbox Code Playgroud)

google-apps-script

0
推荐指数
1
解决办法
615
查看次数

Google Suite - Apps Script - 通过 API 将幻灯片下载为 PNG 文件

大家早上好。我编写了一个简短的脚本,它根据电子表格中的行批量创建 [单页] Google 幻灯片。在每次创建的循环中,我想在 Google Drive 中创建幻灯片的 PNG(或在用户的桌面上下载)。这些图片应该与用户单击文件>下载>PNG 具有相同的规格 - 沉重的小文本需要完整的投影仪高清 - 所以我不相信我可以使用似乎限制为 1600 像素的“缩略图”功能。

我下面的代码生成错误“不支持从文本/html 转换为图像/png” - 所以我不确定这是 API 的限制还是我的编码问题。先感谢您。

  var options =
     {
       "contentType" : "image/PNG"
     };
  var url = 'https://docs.google.com/presentation/d/' + presentationCopyId + '/export/PNG';
  var response = UrlFetchApp.fetch(url, options);
  var image = response.getAs(MimeType.PNG);
  image.setName(SlideName);
  DriveApp.createFile(image);  
Run Code Online (Sandbox Code Playgroud)

google-apps-script google-slides google-slides-api

0
推荐指数
1
解决办法
1902
查看次数

使用 Google Apps Script 将 .CSV 文件数据复制到 Google 表格

我需要遍历源文件夹中的每个 .CSV 文件,并将每个文件中的数据复制到一个 Google Sheets 文件中的新工作表/标签中。我找到了一些与此主题相关的答案,但是我在两个代码集上都遇到了错误。这是我试图从中构建解决方案的代码:

function appendCSV() {  
    var file = DriveApp.getFilesByName("myCSVFile.csv").next(); 
    var csvData = Utilities.parseCsv(file.getBlob().getDataAsString()); 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var lastRow=sheet.getLastRow(); 
    sheet.getRange(lastRow, 1, csvData.length, csvData[0].length).setValues(csvData);
}
Run Code Online (Sandbox Code Playgroud)

这是我遇到的第一个错误:

无法检索下一个对象:迭代器已结束。(第 2 行,文件“代码”)

我可以.next()从第 2 行删除该方法,然后出现另一个错误:

类型错误:在对象 FileIterator 中找不到函数 getBlob。(第 3 行,文件“代码”)

任何人都可以确定这里可能出了什么问题吗?

csv google-sheets google-apps-script

0
推荐指数
1
解决办法
316
查看次数

使用脚本格式化 googlesheet 单元格中的文本

我有一个在单元格中格式化文本的谷歌工作表。一些文本有颜色并且是粗体的。我使用谷歌脚本在单元格中添加新内容。当我运行脚本时,会添加新内容,但会删除旧内容的格式。

1)如何在执行我的脚本时保持旧内容的格式。2)我想让新内容加粗和着色。如何格式化添加到单元格的新内容?

这是执行脚本之前我的单元格的内容

这是我的脚本:

  function CreateIssue() {
  var spreadsheet = SpreadsheetApp.getActive();
  var cell = spreadsheet.getCurrentCell();
  var oldContent = cell.getValue();
  var newContent ='Group:\n\nDescription:\n\nExpected Results:\n\nActual Results:\n\nTest 
  Results:\n\nTest Data:';
  var space = " ";
  cell.setValue(newContent + space + oldContent);
Run Code Online (Sandbox Code Playgroud)

这是执行脚本后我的单元格的内容

如您所见,旧内容的格式已清除。

google-sheets google-apps-script

0
推荐指数
1
解决办法
1931
查看次数

Google 应用程序脚本从二进制文件中获取字节范围

我知道在Google Drive API 中,您可以请求获取某个范围内的文件的一部分:Range: bytes=500-999,但我正在查看Google Apps Script 参考,但似乎无法在其中找到等效的功能。

有没有人有任何想法?

javascript google-apps-script google-drive-api

0
推荐指数
1
解决办法
534
查看次数

如何解决此错误“异常:无效参数:替换”?

我有一个函数可以复制现有文档(模板),然后通过将标题名称与文档中列出的标签进行匹配来动态合并数据。该函数运行没有任何问题,但现在每当它尝试合并时突然我都会收到一条错误消息。任何人都可以让我深入了解问题可能是什么?

错误消息:异常:无效参数:替换

奇怪的是,它并没有阻止信息合并,但错误确实阻止了函数完成其他任务。

与错误一致

headers.forEach(function(e){
     body.replaceText("<<"+e+">>",data[e]);
    return;
  });
Run Code Online (Sandbox Code Playgroud)

整个代码:

function documents(sheet, data){
     var headers = Object.keys(data[0]);     
     var docsToMerge = data.map(function(e){      
       var name = e.location +" - "+e.employeeLastName+", "+e.employeeFirstName+" - "+e.docName+" "+Utilities.formatDate(new Date(e.effectivePayDate), "UTC-4", "M/d/yy");
       var newDoc = DriveApp.getFileById(e.template).makeCopy(name, DriveApp.getFolderById(e.folderId));  
       e.documentLink = newDoc.getUrl();
       e.documentId = newDoc.getId();
       return e;
     });

      docsToMerge.forEach(function(e){
        mergeDocuments(e, headers, signatureFolderId);
      });
}

function mergeDocuments(data, headers){
  var id = DocumentApp.openByUrl(data.documentLink).getId();
  var doc = DocumentApp.openById(id);      
  var body = doc.getBody();

  headers.forEach(function(e){
     body.replaceText("<<"+e+">>",data[e]);
    return;
  });
  doc.saveAndClose();
  return;
}
Run Code Online (Sandbox Code Playgroud)

invalid-argument google-apps-script

0
推荐指数
1
解决办法
4807
查看次数