标签: google-apps-script

Google Apps Script 随机字符串生成

我是 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 官方网站上提供的材料似乎在不时更新,那该怎么办?任何材料链接都会对我有所帮助。!

javascript string random google-apps-script

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

使用 Google Script 创建和打开新文档

我知道我可以使用

var doc = DocumentApp.getActiveDocument();
Run Code Online (Sandbox Code Playgroud)

在 GoogleDocs 上创建新文档,但如何在特定文件夹中创建它?

此外,如何编写代码来打开新创建的文档?我搜索了 https://developers.google.com/apps-script/reference/document/document-app#create(String),但我找不到答案。

非常感谢!

google-docs google-apps-script google-drive-api

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

从电子表格绑定表单中获取表单 URL

在电子表格脚本中,我想向用户发送邮件,这些邮件会将他们指向允许他们输入数据的表单的 URL。我试过了:

function test1(){

  var formID = FormApp.getActiveForm();
  var formUrl = DriveApp.getUrl(formID);
  sendMail(formUrl);
  return
}
Run Code Online (Sandbox Code Playgroud)

这将失败,因为 formID 的值始终为 NULL。

google-apps-script google-forms

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

Google Script:从 gsheet 脚本返回文本

我有一个包含脚本的 Google Sheet。该脚本创建了一些文本,应该是:

  • 复制到剪贴板或
  • 在 Web 浏览器中显示(然后我将手动将其复制到剪贴板)或
  • 保存到硬盘驱动器上的特定文件(然后我将打开文件并将文本复制到剪贴板)

我当前的解决方案,创建一个带有文本的新 gdoc 文件(并在每次脚本运行时打开它并将文本复制到剪贴板)相当慢,并且创建了大量需要稍后删除的文档。

我试图return ContentService.createPlainTextOutput(txt);在 gsheet 脚本中编写,但这会导致错误“TypeError:在对象 ContentService 中找不到函数 createPlainTextOutput”。

google-apps-script

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

如何选择谷歌电子表格/脚本中的第一个空行

所以我应该首先说我是 Javascript/编程的新手。我明白了很多,但在实际编写它时我真的不知道我在做什么。

我正在尝试使用 google 脚本,以便当我打开电子表格时,光标从最后一行开始,以便我可以使用键盘大师和苹果脚本的组合来输入文本。问题是,我似乎什么都做不了。我试图使用他们在这里拥有的:更快的方法来找到第一个空行,但似乎没有任何东西可以正常工作。该函数运行没有问题,但它实际上从未执行任何操作。我已经使用了建议的函数以及“getLastrow”的一些开发人员的函数,但没有任何效果。

我想我已经完成了第二部分,以便在我打开文档时让它工作,我设置了一个“打开时”触发器,但在我使主要功能工作之前我无法实际测试它。

非常感谢,

google-sheets google-apps-script

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

在 Google Apps Script 中对大型脚本进行排序

我们使用 Google 表格来存储和操作来自我们网络应用程序用户的基于事件的数据。最近,我一直在使用 Google Apps Script 来自动化这个数据操作过程,现在我正在寻找一些建议。

我的脚本运行良好有一段时间,然后在上周晚些时候,我开始收到错误消息,“超出最大执行时间”。我在前一天运行良好的两个脚本上收到了此错误,中间没有进行任何编辑。我正在处理大量数据,甚至几次达到电子表格上 2,000,000 个单元格的限制。

我的目标是能够将我的七个脚本排序在一起,这样我就可以用一个触发器来触发它们。如何在不达到最大执行时间错误的情况下执行此操作?有时,当我尝试删除其中的一张工作表时,我的电子表格会崩溃。我的电子表格的大小是否会导致脚本失败?

我已尽力遵循 Google 文档中概述的最佳做法,但有人可以推荐电子表格和脚本组织的最佳做法吗?

google-sheets google-apps-script

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

UrlFetchApp 上的 500 错误

我正在尝试将产品列表的数据从 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)

api rest magento google-apps-script

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

未导入 .html 文档的样式表

我有这个用 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

form.html 中的 css

这是单独的 .html 文件中的 CSS 并包含在 form.html 中

<?!= HtmlService.createHtmlOutputFromFile('Stylesheet').getContent(); ?>
Run Code Online (Sandbox Code Playgroud)

Stylesheet.html 上的 CSS

google-apps-script

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

Google 应用程序脚本 - 获取数组中每个元素的 A1 单元格符号

我有一个函数,我想搜索给定的工作表并返回一个包含自定义函数“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 数据类型。

arrays google-sheets google-apps-script

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

谷歌应用脚​​本。来自 BigQuery.Jobs.query 响应的 JSON

我想从 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)

google-apps-script google-bigquery

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