Excel 支持 PERSONAL.XLS 文件的概念,其中包含我的个人脚本,我希望能够在我打开的任何电子表格/工作簿上使用该脚本。
我如何在 Google Docs 中执行类似操作,即有一组脚本,无论我打开哪个 Google 电子表格,这些脚本都会导致 onOpen 事件运行,从而添加我的额外菜单?
我的代码有一些问题。我正在尝试遍历包含许多 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) 希望对 Google 所描述的 Google Apps 脚本属性配额进行一些澄清。配额和限制可在此处找到:
https://developers.google.com/apps-script/guides/services/quotas
该页面列出了每天 50,000 次对“属性”的写入。我相信这对于每个用户来说都是如此。这是针对该用户的所有附加组件吗?那么,从理论上讲,我的附加组件将与所有其他附加组件共享用户的属性写入配额?
我的另一个问题是属性总存储量。该页面列出了每个属性存储 500 kb 的限制。什么是房产商店?这是否意味着每个附加组件都有一个属性存储并且只能保存 500kB 的任何类型的属性?或者,这是否意味着每个附加组件都有一个用于用户属性的属性存储,另一个用于文档属性的属性存储,以及另一个用于脚本属性的属性存储 - 每个都有 500kB 的限制?
或者,在这种情况下,属性存储还有另一个定义吗?
我有 3 行。它们都有一个(number)&(letter)
格式。例如,Say5&b
出现在 3 行中。我的问题是:
如何仅对数字求和?我努力了:
=SUM(REGEXEXTRACT(B3:B, "(.)&."))
Run Code Online (Sandbox Code Playgroud)
我正在尝试添加所有行的第一个值。
我尝试结合https://developers.google.com/sheets/api/samples/conditional-formatting 中的两个示例
删除需要删除索引,但这不会在读取 API 响应中返回。我尝试假设数组中返回格式的索引是合适的,但是在操作中间遇到错误“索引处没有条件格式”,然后才将它们全部删除。
这是我要清除的工作表的副本:https : //docs.google.com/spreadsheets/d/1Y0tsEcka-1gziimesE74IhPFqGkUO985eZNoVQ9y0BU/edit#gid=0
google-api google-sheets google-sheets-api google-sheets-conditionalformatting
我想知道是否有一种方法可以根据所选过滤器自动选择单元格范围。
目前,我的锻炼是手动输入单元格,以便我可以继续编写代码。我希望我上面说得有道理。
- - 代码 - -
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) 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 curl -X GET \\\n https://XXXXXXXXX \\\n -H \'Authorization: Bearer MY_TOKEN\' \\\n -H \'X-Forwarded-For: …
Run Code Online (Sandbox Code Playgroud) 我有一个脚本可以自动保护我的工作表中的一系列过去日期。
我用标准 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)
运行该函数时的错误信息
服务错误:电子表格
下午好。
我正在尝试通过 Google 应用程序 Script Web 创建一个刷新页面的按钮,但是方法“ window.location.reload (); ”不起作用,有人可以帮忙吗?
<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) 我使用了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
bad-request ×1
filter ×1
filtering ×1
formula ×1
google-api ×1
google-sheets-conditionalformatting ×1
html ×1
http ×1
javascript ×1
pdf ×1
protection ×1
quota ×1
regex ×1