我想实现一个菜单项,选择该菜单项时会弹出颜色选择器,然后将工作表上某些单元格的背景颜色更改为所选的颜色。
我已经成功地在我的脚本中完成了所有这些事情,但我没有一个好的方法让用户轻松传递可用于更改背景的颜色。(我想避免要求他们将某个单元格更改为他们想要的颜色,然后单击菜单项来更改工作表的其余部分)
这是我当前的代码:
//Function to create menu item
function onOpen(){
var ui = SpreadsheetApp.getUi();
ui.createMenu('Sheet Options')
.addItem('Change Background Color', 'colorMe')
.addToUi();
}
function colorMe(){
var spreadsheet = SpreadsheetApp.getActive();
// Code to get color value selected by user from ui color picker
// Replace #000000 with that value
spreadsheet.getRangeList(['A:A', '1:1', 'H:H', 'I:I', 'N:U', 'B8:G9', 'E10:E31', 'F14:G31', 'B32:G100', '101:142']).activate()
.setBackground('#000000');
}
Run Code Online (Sandbox Code Playgroud) 我试图将 var 'id' 从页面 'a.html' 传递到 'b.html'。var 内容来自“code.gs”,如下所示:
代码.gs
function data(){
var id = 1;
return id;
}
Run Code Online (Sandbox Code Playgroud)
接下来,我得到这个 var 并将其显示在“a.html”中:
a.html
<?
var id = data();
?>
<h1><?= id ?></h1>
<a href="b.html">Go to B.html</a>
Run Code Online (Sandbox Code Playgroud)
通过单击“转到 B.html”,系统会将用户引导至那里。我需要将 var 'id' 的相同值从页面 'a.html' 带到 'b.html'。Ps:搜索了一下,我看到有一种通过命令“localStorage”发送这个var,但它对我不起作用。:(
有谁能够帮助我?
Apps 脚本人员,如何以编程方式从 Apps 脚本中删除Google 表格中的自定义菜单项。有足够的方法来添加项目,但我看不到任何可以删除的方法。看起来这是一个主要的 API 遗漏?有谁知道如何做到这一点?
我想实现什么目标?
我想使用谷歌表单跟踪谷歌文档的审核状态,下拉选项为“待办事项、进行中、完成”。我有谷歌表单项目作为“文档的URL,状态”。我创建了一个谷歌表单模板,我将使用它为各种用户创建表单。我希望能够创建模板表单的副本,并从谷歌应用程序脚本设置“URL”的预定义值,以便用户只需选择文档的状态。
我尝试了什么?
我从这个答案中遇到了 createResponse() 方法,但这需要.submit()用于保存响应并将答案记录在表中。我不想从脚本本身提交表单。这是代码:
function form()
{
var form = FormApp.create("Test");
form.addTextItem().setTitle("URL");
form.addTextItem().setTitle("Status");
var items = form.getItems();
var url = items[0].asTextItem();
var fr = url.createResponse('my predefined url');
var FormResponse = form.createResponse();
FormResponse.withItemResponse(fr);
FormResponse.submit();
Logger.log(form.getPublishedUrl());
}
Run Code Online (Sandbox Code Playgroud)
最终查询:
如何从应用程序脚本中获取表单的已发布 URL 以及 URL 项目的预填充答案?是否可以?
我已经浏览了有关该主题的所有线程。从 blob 到 URL 等等,通过 apps-script 将图像插入单元格,但似乎没有任何效果。大多数帖子都没有给出足够好的解决方案来追溯错误。所以我想在这里找到我的问题的答案。下面是我的代码。我也很想讨论不同方法的优点。据我所知,在处理 G-Drive 中已有的图像时,Blob 似乎是最简单的之一。
function getGDriveFilesIntoCell() {
var dApp = DriveApp; // Store GDrive App in a function
var folderIter = dApp.getFoldersByName("Training_folder"); // Get folder by name
var foundfolder = folderIter.next(); // next allows to Iterate through the found folders
Logger.log(foundfolder); // Print into the logs the found folder of foundfolder
var ss = SpreadsheetApp.getActiveSpreadsheet(); //.getActiveSheet(); // Calls the Spreadsheet App and the current active Spreadsheet
var sheet = ss.getSheets()[0]; // Get first sheet …Run Code Online (Sandbox Code Playgroud) 我创建了一个脚本,其中 Google Sheet 被转换为 PDF 并通过电子邮件发送(通过 Gmail API)。
请找到以下用于将工作表转换为 PDF 的语法
var blob=DriveApp.getFileById(<<Google Sheet ID>>).getAs('application/pdf');
Run Code Online (Sandbox Code Playgroud)
可以做什么来找出这里斑点的大小?
javascript blob google-sheets google-apps-script google-drive-api
我正在制作一个调用 GAS 函数的 Slack 机器人。一切正常,只是 Slack 显示错误消息,因为它在调用 API 时只等待 3 秒响应。
任何人都可以帮助我弄清楚如何异步运行 everyDay2 ,以便我可以在完成之前返回响应。我尝试过 Promise 和回调,但无法解决。
function doPost(e){
const promise = new Promise(everyDay2);
return ContentService.createTextOutput('thinking...');
}
Run Code Online (Sandbox Code Playgroud) javascript asynchronous promise google-apps-script slack-api
我有一个 Google 文档,其中有多个人参与运行的 Google Apps 脚本脚本。onEdit当人们编辑工作表时会触发一个触发器。据我了解,如果一个人编辑该工作表,就会触发我的onEdit触发功能。
如果第二个人在第一次完成处理之前编辑工作表onEdit,那么它会停止第一个实例,然后onEdit开始第二个实例,而不会完成第一个实例。
为了避免这种情况,我试图使我的代码尽可能高效,理论是如果该onEdit过程花费的时间较少,则重叠的可能性较小。为了实现这一点,我尝试尽量减少读/写。使用一系列记录器语句,我跟踪了耗时的代码行。我注意到我的其中一条setValues()线需要将近 6 秒才能运行。这是一个大数组,在我对其进行调整后被发布回工作表。
我的问题:
setValues()比通话时间长setValue()?setValues()调用小数组是否比setValues()调用大数组花费的时间更少?我知道一个命令setValues()会比 1000 个命令快得多setValue()。
我原以为无论大小如何,一次写入工作表应该花费大约相同的时间。有什么办法可以尽量减少这个时间吗?
我有一个数组说
arr1 = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
Run Code Online (Sandbox Code Playgroud)
我想将其切片并选择第二列和第三列。
我尝试过使用切片,但没有成功。
var result = arr1.slice(1,3);
但我没有得到想要的输出
[[2,3],[6,7],[10,11]]
Run Code Online (Sandbox Code Playgroud)
是因为我使用 Google 电子表格收集数据吗?
我正在按照以下教程将股票期权数据导入 Google 工作表。
https://www.youtube.com/watch?v=Be7z9YeeVY0&ab_channel=daneshj
以下公式将把雅虎财经的数据导入到工作表中:
=iferror(TRANSPOSE(IMPORTXML(CONCATENATE("https://finance.yahoo.com/quote/",A2,"?p=",A2),"//tr")),"You have to add a contract name in column A")
Run Code Online (Sandbox Code Playgroud)
乍一看,一切看起来都很好,因为它似乎是从网页上拉回数据;然而,所有的值都是不正确的。
本示例中从中提取数据的 URL 如下。请注意,数据经常变化。
https://finance.yahoo.com/quote/NKLA220121C00002500?p=NKLA220121C00002500
这些数字不仅在这个特定示例中是错误的,而且每次都是错误的,并且误差范围足够大,我不认为这是由于 IMPORTXML 缓存页面造成的。我已经搜索了网页的 HTML 源代码,但在任何地方都找不到 IMPORTXML 中的值。
google-sheets web-scraping google-apps-script yahoo-finance google-sheets-formula
javascript ×4
arrays ×1
asynchronous ×1
blob ×1
google-forms ×1
html ×1
menu ×1
promise ×1
read-write ×1
slack-api ×1
web-scraping ×1