这是我正在编写的脚本,以帮助我弄清楚如何编写更复杂的脚本。
在我的电子表格中,我有一列包含值列表(“testRange”、“testRangeValues”)。我还有一个下拉列表(“testCell”、“testCellValue”)。下拉列表包含一些在“testRange”列表中的值和一些不在的值。
我希望我的脚本以这样一种方式运行,当我从下拉列表中选择一个与 testRange 列表中的值匹配的值时,testRange 列表中相应值的背景颜色变为红色。
function onEdit3(e) {
var testRange = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange("A4:A8");
var testRangeValues = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange("A4:A8").getValues();
var testCell = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange("C4");
var testCellValue = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange("C4").getValue();
for(var i = 0;i<testRange.length;i++){
if(testCellValue==testRangeValues[i]){
testRange[i].setBackground("Red");
}
}
}Run Code Online (Sandbox Code Playgroud)
目前没有发生颜色变化。我想我不太确定如何正确编写我的 for 循环/if 语句以达到预期的效果。有没有办法在我的电子表格中使用某种条件格式公式来做到这一点?
for-loop conditional-formatting google-sheets google-apps-script
我注意到 Google Apps 脚本编辑器使用不记名令牌来请求很多东西,这让我想到:是否可以在您自己的服务器上使用 Google API 执行使用 Google Apps 脚本完成的所有功能?本质区别是什么?只是谷歌应用程序脚本在谷歌服务器上运行,而使用谷歌 API 你需要创建自己的服务器吗?
例如,我认为只能使用 API 完成的许多文档功能可以在这里找到https://developers.google.com/docs/api/reference/rest/v1/documents/request#InsertInlineImageRequest
那么本质区别是什么?
我在 Apps Script 中请求 Go to Webinar API,响应如下:
{"joinUrl":"https://example.com","asset":true,"registrantKey":3669516009270899211,"status":"APPROVED"}
Run Code Online (Sandbox Code Playgroud)
当我制作 JSON.parse 时,我得到如下信息:
{joinUrl=https://example.com, asset=true, registrantKey=3.6695160092708992E18, status=APPROVED}
Run Code Online (Sandbox Code Playgroud)
RegistrantKey 变了,不知道为什么。
那是我的代码:
try{
var resp = UrlFetchApp.fetch(url,options)
var json=JSON.parse(resp);
return json
}catch(err){
Logger.log(err);
return err;
Run Code Online (Sandbox Code Playgroud)
}
我正在使用 Google Apps Script 自动将电子邮件中的附件保存到唯一的 Google Drive 文件夹,具体取决于邮件已过滤到的标签。
到目前为止,我已经设法使用我在网上找到的一些代码片段来获取消息 ID。但是,我一直在尝试访问邮件正文并将附件保存到驱动器文件夹中。
function getMessage(){
var folder = DriveApp.getFolderById('xxxxxxxxxxxxx');
var userId = "myemail@gmail.com";
var query = "label:Global Alcohol";
var res = Gmail.Users.Messages.list(userId, {q: query});
var attachment = msgs.Attachments.get(userId, messageId, id);
var ids = res.messages.map(function(e){return e.id});
Logger.log(ids);// Message IDs with the specific labels.
}
Run Code Online (Sandbox Code Playgroud)
在此先感谢您的帮助。
我有下面的脚本,它在名为价格的谷歌表中导入一些 XML 数据。一切正常,只是我设置了一个时间驱动的触发器每分钟运行一次,但数据不会更新。
我只有这个功能作为一个项目。
function getData() {
var sheetName = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("prices");
var queryString = Math.random();
var cellFunction = '=ImportXML("http://myxmldata.com/data-xml.php","//data/date")';
sheetName.getRange('A2').setValue(cellFunction);
}
Run Code Online (Sandbox Code Playgroud)
那么怎么了?
我正在尝试创建一个模型支付弹出窗口,用户可以在其中升级他们在谷歌应用程序脚本中的计划。在我的.gs文件中,我有:
function manageSubscription() {
var title = 'subscribe';
var html = HtmlService.createTemplateFromFile('subscribe');
html.email = Session.getActiveUser().getEmail();
var htmlOutput = html.evaluate();
htmlOutput.setTitle(title).setWidth(200).setHeight(200)
DocumentApp.getUi().showModalDialog(htmlOutput, title);
}
Run Code Online (Sandbox Code Playgroud)
在我的.html文件中,我试图在他们注册时使用该电子邮件地址将其传递给 paypal:
<script id="paypal_js"></script> // how do I set the src???
<script>
$(document).ready(function(){
var src = 'https://www.paypal.com/sdk/js?client-id=my-client-id&email=';
document.getElementById('paypal_js').src = src+<?= email ?>;
paypal.Buttons({
createSubscription: function(data, actions) {
return actions.subscription.create({'plan_id': 'P-my-plan'});
},
onApprove: function(data, actions) {
google.script.host.close();
}
}).render('#paypal-button-container');
});
</script>
Run Code Online (Sandbox Code Playgroud)
但是,我进入ReferenceError: paypal is not defined了浏览器控制台。奇怪的是,我可以做一个简单的 'alert();' 并看到我收到了电子邮件。
我有一个URL列表,我想检查响应代码.有谁知道我在Google文档中如何做到这一点?我有16000个网址,所以这是一个很大的问题.
任何帮助赞赏.
是否可以使用SQL类型查询连接到GAS中的Google Spreadsheet?如果是这样,任何工作样品?
谢谢.
我为Google Spreadsheet应用程序开发了几个通用脚本函数.目前,我将每个功能保存在我的笔记本电脑的单个文件中.为了将它们包含在电子表格中,我只知道一种方法.
将各个函数文件合并为一个文件.然后将合并文件中的数据复制并粘贴到电子表格的脚本编辑器中,替换以前的内容.
如果有一种方法(例如使用"项目")可以保存单个函数文件一次然后我可以在新脚本中根据需要引用这些函数,那将是很好的.
我不知道是否有这种可能性.我只在电子表格内容的树列表中看到一个名为"code"的节点.
任何帮助表示赞赏.
我想知道是否有办法运行需要授权的脚本而不必调用它两次.例如,如果我在google网站上有一个调用脚本的链接,我必须点击两次 - 一次开始授权过程,然后一次实际运行脚本.我觉得这对用户来说会非常混乱.
谢谢!杰夫
for-loop ×1
gmail ×1
gmail-api ×1
google-api ×1
google-oauth ×1
javascript ×1
jquery ×1
json ×1
jsonparser ×1
paypal ×1
request ×1