我是 Google 应用程序脚本的新手,我想在下面给出的变量 body2 中的代码中创建随机字符字符串。
function myfunction() {
var files = DriveApp.getFiles();
while (files.hasNext(`enter code here`)) {
Logger.log(files.next().getName());
}
var recipient = Session.getActiveUser().getEmail();
var subject = 'A list of files in your Google Drive';
var body1 = Logger.getLog();
var body2;
for(var i=0;i<6;i++)
{
body2[i]=BigNumber.tostring("Math.floor(Math.random()*11)");
}
body=body1+body2;
MailApp.sendEmail(recipient, subject, body);
};
Run Code Online (Sandbox Code Playgroud)
但是当我运行这个函数时,它说“类型错误:在对象 0 中找不到函数 tostring。(第 12 行,文件“代码”)“我不明白如何解决这个错误?为什么我们必须将 random 乘以 11 ,它可以与任何整数相乘吗?如果我只想要大写字母的字符串怎么办?!
其他一些问题 1)我对 JavaScript 的了解不够,直接学习 GAS 好吗?2)我找不到合适的 GAS 书面材料或文档,Google 官方网站上提供的材料似乎在不时更新,那该怎么办?任何材料链接都会对我有所帮助。!
我知道我可以使用
var doc = DocumentApp.getActiveDocument();
Run Code Online (Sandbox Code Playgroud)
在 GoogleDocs 上创建新文档,但如何在特定文件夹中创建它?
此外,如何编写代码来打开新创建的文档?我搜索了 https://developers.google.com/apps-script/reference/document/document-app#create(String),但我找不到答案。
非常感谢!
在电子表格脚本中,我想向用户发送邮件,这些邮件会将他们指向允许他们输入数据的表单的 URL。我试过了:
function test1(){
var formID = FormApp.getActiveForm();
var formUrl = DriveApp.getUrl(formID);
sendMail(formUrl);
return
}
Run Code Online (Sandbox Code Playgroud)
这将失败,因为 formID 的值始终为 NULL。
我有一个包含脚本的 Google Sheet。该脚本创建了一些文本,应该是:
我当前的解决方案,创建一个带有文本的新 gdoc 文件(并在每次脚本运行时打开它并将文本复制到剪贴板)相当慢,并且创建了大量需要稍后删除的文档。
我试图return ContentService.createPlainTextOutput(txt);在 gsheet 脚本中编写,但这会导致错误“TypeError:在对象 ContentService 中找不到函数 createPlainTextOutput”。
所以我应该首先说我是 Javascript/编程的新手。我明白了很多,但在实际编写它时我真的不知道我在做什么。
我正在尝试使用 google 脚本,以便当我打开电子表格时,光标从最后一行开始,以便我可以使用键盘大师和苹果脚本的组合来输入文本。问题是,我似乎什么都做不了。我试图使用他们在这里拥有的:更快的方法来找到第一个空行,但似乎没有任何东西可以正常工作。该函数运行没有问题,但它实际上从未执行任何操作。我已经使用了建议的函数以及“getLastrow”的一些开发人员的函数,但没有任何效果。
我想我已经完成了第二部分,以便在我打开文档时让它工作,我设置了一个“打开时”触发器,但在我使主要功能工作之前我无法实际测试它。
非常感谢,
我们使用 Google 表格来存储和操作来自我们网络应用程序用户的基于事件的数据。最近,我一直在使用 Google Apps Script 来自动化这个数据操作过程,现在我正在寻找一些建议。
我的脚本运行良好有一段时间,然后在上周晚些时候,我开始收到错误消息,“超出最大执行时间”。我在前一天运行良好的两个脚本上收到了此错误,中间没有进行任何编辑。我正在处理大量数据,甚至几次达到电子表格上 2,000,000 个单元格的限制。
我的目标是能够将我的七个脚本排序在一起,这样我就可以用一个触发器来触发它们。如何在不达到最大执行时间错误的情况下执行此操作?有时,当我尝试删除其中的一张工作表时,我的电子表格会崩溃。我的电子表格的大小是否会导致脚本失败?
我已尽力遵循 Google 文档中概述的最佳做法,但有人可以推荐电子表格和脚本组织的最佳做法吗?
我正在尝试将产品列表的数据从 Magento API 传递到 Google 电子表格。Magento API 不需要身份验证,因为我以访客身份检索数据。该 API 与RestClient完美配合。
但是,从 Googe Apps Script 获取 REST 资源时出现 500 错误。
Exception: Request failed for
http://mymagentohost/api/rest/products?limit=2
returned code 500. Truncated server response: Service temporary
unavailable (use muteHttpExceptions option to examine full response)
Run Code Online (Sandbox Code Playgroud)
这是我的 Google Apps 脚本:
function myscript() {
var url = "http://mymagentohost/api/rest/products?limit=2"
var response = UrlFetchApp.fetch(url);
var out = JSON.parse(response.getContentText());
var doc = SpreadsheetApp.create("Product Info");
var cell = doc.getRange('a1');
var index = 0;
for (var i in out) { …Run Code Online (Sandbox Code Playgroud) 我有这个用 google 应用程序脚本编写的 HTML(称为 form.html)创建的表单,我还有一个样式表(CSS)来配合它。当我将 CSS 放在与表单相同的 HTML 文件中时,一切都运行良好。但是,如果我想将样式表放在单独的 HTML 文件(称为 Stylesheet.html)中,然后使用脚本将其包含在 form.html 中
<?!= HtmlService.createHtmlOutputFromFile('Stylesheet').getContent(); ?>
Run Code Online (Sandbox Code Playgroud)
甚至创建一个“包含”函数:
function include(filename) {
return HtmlService.createHtmlOutputFromFile(filename)
.setSandboxMode(HtmlService.SandboxMode.IFRAME)
.getContent();
}
Run Code Online (Sandbox Code Playgroud)
然后在 form.html
<?!= include(Stylesheet) ?>
Run Code Online (Sandbox Code Playgroud)
..它似乎不起作用。更糟糕的是,scriplet 出现在表单上。也许我忽略了一些基本的东西,但我无法理解这一点。有任何想法吗 ?
这是到目前为止的代码......
<?!= HtmlService.createHtmlOutputFromFile('Stylesheet').getContent(); ?>
Run Code Online (Sandbox Code Playgroud)
function include(filename) {
return HtmlService.createHtmlOutputFromFile(filename)
.setSandboxMode(HtmlService.SandboxMode.IFRAME)
.getContent();
}
Run Code Online (Sandbox Code Playgroud)
<?!= include(Stylesheet) ?>
Run Code Online (Sandbox Code Playgroud)
用CSS结果IN的form.html

这是单独的 .html 文件中的 CSS 并包含在 form.html 中
<?!= HtmlService.createHtmlOutputFromFile('Stylesheet').getContent(); ?>
Run Code Online (Sandbox Code Playgroud)

我有一个函数,我想搜索给定的工作表并返回一个包含自定义函数“POPULATE”的单元格数组。该函数当前返回“=POPULATE”的每个实例的字符串数组。
function formulaSearch() {
var sheet = spreadsheet.getSheetByName('test');
var range = sheet.getDataRange();
var values = range.getValues();
var formulas = range.getFormulas();
// Search for all cells with the POPULATE function and put them into array
var cells = [];
for (var row in formulas) {
for (var col in formulas[row]) {
if (formulas[row][col].indexOf("=POPULATE") > -1 ) {
cells.push(formulas[row][col]);
Logger.log(cells);
}
}
}
return cells;
}
Run Code Online (Sandbox Code Playgroud)
如何以包含公式的每个单元格的 A1 表示法返回一组单元格?我知道 .getA1Notation() 方法,但我无法将返回数组中的元素转换为 Range 数据类型。
我想从 BigQuery.Jobs.query 的响应中获取 JSON 字符串。有什么简单的方法吗?
谷歌应用脚本
var request = {
query: 'SELECT TOP(word, 300) AS word, COUNT(*) AS word_count ' + 'FROM publicdata:samples.shakespeare WHERE LENGTH(word) > 10;'
};
var queryResults = BigQuery.Jobs.query(request, projectId);
Run Code Online (Sandbox Code Playgroud)
我想从中获取 JSON 文本 queryResults
[
{
"word": "counterfeit",
"word_count": "28"
},
{
"word": "remembrance",
"word_count": "24"
},
{
"word": "countenance",
"word_count": "24"
},
Run Code Online (Sandbox Code Playgroud)
感谢 Henrique Abreu。
var request = {
query: 'SELECT TOP(word, 300) AS word, COUNT(*) AS word_count ' + 'FROM publicdata:samples.shakespeare WHERE LENGTH(word) > 10;' …Run Code Online (Sandbox Code Playgroud) api ×1
arrays ×1
google-docs ×1
google-forms ×1
javascript ×1
magento ×1
random ×1
rest ×1
string ×1