小编The*_*ter的帖子

如何使一组脚本可用于我的所有 Google 电子表格?

Excel 支持 PERSONAL.XLS 文件的概念,其中包含我的个人脚本,我希望能够在我打开的任何电子表格/工作簿上使用该脚本。

我如何在 Google Docs 中执行类似操作,即有一组脚本,无论我打开哪个 Google 电子表格,这些脚本都会导致 onOpen 事件运行,从而添加我的额外菜单?

google-sheets google-apps-script

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

将多个 PDF 合并为一个 PDF

我的代码有一些问题。我正在尝试遍历包含许多 PDF 的 Drive 文件夹,然后将它们合并为一个文件。当我使用我的代码时,它只是为 Drive 文件夹中的最后一个 PDF 创建一个 PDF,而不是按预期将它们全部合并在一起。

function MergeFiles(){
  var folder = DocsList.getFolderById('myFolderID'); 
  var files = folder.getFiles(); 
  var blobs = [];    
  for( var i in files )   
    blobs.push(files[i].getBlob().getBytes());
  Logger.log(blobs.push(files[i].getBlob().getBytes()));
  var myPDF = Utilities.newBlob(blobs.pop(), "application/pdf", "newPDF.pdf");
  folder.createFile(myPDF);
}
Run Code Online (Sandbox Code Playgroud)

pdf export-to-pdf pdf-manipulation google-apps-script

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

Google Apps 脚本属性配额说明

希望对 Google 所描述的 Google Apps 脚本属性配额进行一些澄清。配额和限制可在此处找到:

https://developers.google.com/apps-script/guides/services/quotas

该页面列出了每天 50,000 次对“属性”的写入。我相信这对于每个用户来说都是如此。这是针对该用户的所有附加组件吗?那么,从理论上讲,我的附加组件将与所有其他附加组件共享用户的属性写入配额?

我的另一个问题是属性总存储量。该页面列出了每个属性存储 500 kb 的限制。什么是房产商店?这是否意味着每个附加组件都有一个属性存储并且只能保存 500kB 的任何类型的属性?或者,这是否意味着每个附加组件都有一个用于用户属性的属性存储,另一个用于文档属性的属性存储,以及另一个用于脚本属性的属性存储 - 每个都有 500kB 的限制?

或者,在这种情况下,属性存储还有另一个定义吗?

quota google-apps-script

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

如何对多行中的正则表达式的值求和

我有 3 行。它们都有一个(number)&(letter)格式。例如,Say5&b出现在 3 行中。我的问题是:

如何仅对数字求和?我努力了:

  =SUM(REGEXEXTRACT(B3:B, "(.)&."))
Run Code Online (Sandbox Code Playgroud)

我正在尝试添加所有行的第一个值。

regex formula google-sheets google-sheets-formula

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

如何以编程方式删除 Google Sheet 上的所有条件格式?

我尝试结合https://developers.google.com/sheets/api/samples/conditional-formatting 中的两个示例

  1. 阅读所有条件格式。
  2. 删除它们。

删除需要删除索引,但这不会在读取 API 响应中返回。我尝试假设数组中返回格式的索引是合适的,但是在操作中间遇到错误“索引处没有条件格式”,然后才将它们全部删除。

这是我要清除的工作表的副本:https : //docs.google.com/spreadsheets/d/1Y0tsEcka-1gziimesE74IhPFqGkUO985eZNoVQ9y0BU/edit#gid=0

google-api google-sheets google-sheets-api google-sheets-conditionalformatting

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

如何从过滤器中自动选择范围而无需手动输入?

我想知道是否有一种方法可以根据所选过滤器自动选择单元格范围。

例子: 样本

  • 在(H 列)中设置过滤器
  • 自动选择从 A 列 (A2000) 开始的结果单元格数据:C 列 (C5000) 等 --- 这就是我陷入困境的地方。我不知道如何编写以根据所选过滤器自动选择结果单元格数据。

目前,我的锻炼是手动输入单元格,以便我可以继续编写代码。我希望我上面说得有道理。

- - 代码 - -

function ColHtoActive() {
  var ss = SpreadsheetApp.getActive();
  var sheet = ss.getSheetByName('Current');  
  var crange = sheet.getRange('A7:I7350').activate();                                
  var currentCell = sheet.setCurrentCell(sheet.getRange('H7'); 
  var hSfilter = sheet.getRange('A7:I7350').createFilter(); 
  var ccC1 = sheet.getRange('H7').activate();
  var cCriteria = SpreadsheetApp.newFilterCriteria().setHiddenValues('Inactive']).build(); 

  sheet.getFilter().setColumnFilterCriteria(8, cCriteria);    
}

function copycolA() {
  var ss = SpreadsheetApp.getActive().getSheetByName('A');
  ss.getRange('A2307').activate();
  ss.getRange('A2307:A7155').copyTo(
      ss.getActiveRange(),
      SpreadsheetApp.CopyPasteType.PASTE_NORMAL,
      false);
}
Run Code Online (Sandbox Code Playgroud)

filtering filter google-sheets google-apps-script

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

Google Apps 脚本中提供的属性值无效

问题

\n\n
    \n
  • 我想在更改IP地址的同时与api通信,因为服务器限制IP地址。因此,我使用 UrlFetchApp 添加X-Forwarded-For标头。但是,我收到错误“提供的属性值无效:标头:X-Forwarded-For \n”
  • \n
\n\n

问题

\n\n
    \n
  • 我怎么解决这个问题?或者还有别的办法吗?
  • \n
\n\n
function myFetch() {\n\n  var url = "https://XXXXXXXXX"\n\n  var options = { method: "GET" };\n  options.headers = {\n    Authorization: "Bearer " + MY_TOKEN,\n    "X-Forwarded-For": "XXX.XXX.XXX.XXX"\n  };\n\n  var resp = UrlFetchApp.fetch(url, options);\n  var json = resp.getContentText();\n  var data = JSON.parse(json);\n\n  return data;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

尝试了 \xe2\x86\x92 错误

\n\n
    \n
  • 尝试:cURL请求。\n\xe2\x86\x92成功:我可以更改IP地址并获取数据。
  • \n
\n\n
    curl -X GET \\\n      https://XXXXXXXXX \\\n      -H \'Authorization: Bearer MY_TOKEN\' \\\n      -H \'X-Forwarded-For: …
Run Code Online (Sandbox Code Playgroud)

http google-apps-script x-forwarded-for

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

sheet.getProtections 不再有效?

我有一个脚本可以自动保护我的工作表中的一系列过去日期。

我用标准 sheet.getProtections(SpreadsheetApp.ProtectionType.RANGE);

它工作了好几个月,但从昨天开始就没有工作了。

对实现有任何修改吗?

谢谢

PS:工作表对象在我的测试中很好地返回

var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("TRAVAUX");
var debug = sheet.getName();
var protections = sheet.getProtections(SpreadsheetApp.ProtectionType.RANGE);
Run Code Online (Sandbox Code Playgroud)

运行该函数时的错误信息

服务错误:电子表格

protection google-sheets google-apps-script

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

如何刷新页面,Google应用程序Script Web

下午好。

我正在尝试通过 Google 应用程序 Script Web 创建一个刷新页面的按钮,但是方法“ window.location.reload (); ”不起作用,有人可以帮忙吗?

链接Google应用程序脚本网址:https://script.google.com/d/1jyWe9jm0dIqHsY1uKJZ0pOJYzLuq9dip1cSsXhxBwv53cFakW2LHgM_n/edit ?mid=ACjPJvGbLXQwvhjDh7fsdifcTFvgQby-gsIUWeCSmwUzTdnVvXw8LNckG8rXcsy hcYvAcWAN7pU4E05bQEJwZl_1189N-bwyvttAxpHxmbvzUvx_d9SDKh19x3VzY9XxClhXweVlmqdMOSs&uiv=2

<html>
Run Code Online (Sandbox Code Playgroud)

<base target="_se">
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<script src="http://code.jquery.com/jquery-1.8.3.js"></script>
<script src="http://tablesorter.com/__jquery.tablesorter.min.js" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)

<button onclick="sortTable()">Sort</button>
<button onclick="refresh()">refresh </button>

  <table class="striped centered ajuste" id="tab">
           <thead >           
             <tr>

              <th>ID</th>
              <th>NOME</th>
              <th>DATA</th>

             </tr>
           </thead>
            <tbody id="coportoTabela">

            </tbody>
  </table>
Run Code Online (Sandbox Code Playgroud)

 document.addEventListener("DOMContentLoaded", function(){

        google.script.run.withSuccessHandler(gerarTabela).pegarTabelaEstoque();

  });

  function gerarTabela(dataArray){
    var tcorpo =  document.getElementById("coportoTabela");    

     dataArray.forEach(function(r){

     var linha = document.createElement("tr");

     var coluna1 = document.createElement("td");
     coluna1.textContent = r[0];
     var coluna2 = document.createElement("td"); …
Run Code Online (Sandbox Code Playgroud)

html javascript web-applications google-apps-script

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

在 Apps 脚本中导入日历事件时如何调试 BadRequest 错误?

我使用了https://developers.google.com/apps-script/samples/automations/vacation-calendar上的“填充团队假期日历”示例来构建一个 Apps 脚本,以将所有外出事件拉入共享日历。该脚本几个月来一直运行良好。如果不对脚本进行任何更改,现在调用时Calendar.Events.import(event, TEAM_CALENDAR_ID);出现错误:

GoogleJsonResponseException:对 calendar.events.import 的 API 调用失败并出现错误:错误请求

我已经在调试器中运行了该脚本,并且该错误并没有提供任何有关错误实际内容的信息,除了 400 错误请求之外。还有很多与日期/时间格式相关的其他问答,但event我导入的变量来自之前的调用,Calendar.Events.list(...)因此它已经是 api 本身生成的 JS 事件对象。

这是一个最小的可重现示例:

let TEAM_CALENDAR_ID = '<calendar id goes here>';

function testImport() {
  const now = new Date();
  let user = Session.getActiveUser();
  
  // Fetch next 10 events
  let events = Calendar.Events.list(user.getEmail(), {
    timeMin: now.toISOString(),
    singleEvents: true,
    orderBy: 'startTime',
    maxResults: 10
  });

  if (events.items.length === 0) {
    console.error('No events found');
    return;
  }

  // Use next upcoming event for this user …
Run Code Online (Sandbox Code Playgroud)

google-calendar-api bad-request google-apps-script http-status-code-400

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