标签: google-apps-script

Google 脚本:有没有办法让 getRange 具有多个不相邻的列

我正在尝试在一个工​​作表中获取多个列并将其复制到另一个中。使用getRange 函数,有没有办法获取和复制(例如):Col1、Col3、Col7?(而且我不太乐意为此使用查询......)

谢谢 !

google-apps-script

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

如何使用批处理操作优化我的代码?

我想对电子表格中的一系列值执行基本乘法,然后将这些值除以列中的一系列值,请注意,我的范围是 8 列长,除法范围是一列长。

我有这个代码:

function multiply() {
  var doc = SpreadsheetApp.openById(SCRIPT_PROP.getProperty("1iXQxyL3URe1X1FgbZ76mEFAxLnxegyDzXOMF6WQ5Yqs"));
  var sheet = doc.getSheetByName("json");
  var sheet2 = doc.getSheetByName("tabla de frecuencias");
  var sheet3 = doc.getSheetByName("Template");

  var range = sheet2.getDataRange();
  var numRows = range.getNumRows();
  var numCols = range.getNumColumns()-1; //This will get the division values which are located in the last column
  var targ =  sheet2.getLastColumn();

  for (var i = 2; i <= numRows; i++) {
    for (var j = 2; j <= numCols; j++) {
      var A = range.getCell(i,j).getValue();
      var value …
Run Code Online (Sandbox Code Playgroud)

google-sheets google-apps-script

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

Google Apps Script - 使用 sha1 和 base64 编码发出 url 请求

我必须使用 Google Apps Script 发出 url 请求,为此,我需要使用 sha 1 算法和 base64 编码对我的登录名和密码进行编码。在请求的文档中,我有以下 php 代码:

$string = "loginpassword2017-15-04T09:25:00"; $hash = sha1($string, true); $hash = base64_encode($hash);

所以在 Google Apps Script 中,我使用以下代码:

function GetSHA1(input) { var rawHash = Utilities.computeDigest(Utilities.DigestAlgorithm.SHA_1, input); var txtHash = ''; for (j = 0; j <rawHash.length; j++) { var hashVal = rawHash[j]; if (hashVal < 0) hashVal += 256; if (hashVal.toString(16).length == 1) txtHash += "0"; txtHash += hashVal.toString(16); } return txtHash; }

然后函数

Utilities.base64Encode

最后我发出了 url 请求,但身份验证不成功。有人知道如何在 Google …

google-apps-script

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

使用 Google App Script 更改 Google 表单中项目的顺序

我正在尝试基于模板 Google 表单,使用来自 Google 电子表格的数据以编程方式创建 Google 表单。

无论如何要更改项目的顺序吗?有时我们需要在项目上使用“重复”功能,但随后将重复的项目附加到表单的末尾,这不是我们想要的。

非常感谢!

google-apps-script google-forms

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

参考错误:“AdminDirectory”未定义

我正在使用示例脚本来创建用户,但它不断收到此错误 ReferenceError: "AdminDirectory" is not defined

/**
 * Adds a new user to the domain, including only the required information. For
 * the full list of user fields, see the API's reference documentation:
 * @see https://developers.google.com/admin-sdk/directory/v1/reference/users/insert
 */
function addUser() {
  var user = {
    primaryEmail: 'liz@mydomain.com',
    name: {
      givenName: 'Elizabeth',
      familyName: 'Smith',
    },
    // Generate a random password string.
    password: Math.random().toString(36),
  };
  user = AdminDirectory.Users.insert(user);
  Logger.log('User %s created with ID %s.', user.primaryEmail, user.id);
}
Run Code Online (Sandbox Code Playgroud)

google-apps-script google-admin-sdk

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

获取活动行并设置列

我希望此脚本获取活动行并设置列并将其添加到脚本中的结果中。我可以让脚本查看活动行上的一个范围而不是一个单元格值。我想要来自活动行的第 6 列数据。此数据显示在 HTML 弹出框中。当它运行时,它会查看此脚本以填充弹出框中的一个框。请帮忙,谢谢。

function studentid() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Your Region List');
var values = sheet.getRange(2, 6,sheet.getLastRow() - 1);
var result = new Array(values.getLastColumn() - 1);
for(i =0; i < 25; i++) {
result[i] = values.getCell(i + 1, 1).getValue();
}
return result;
Run Code Online (Sandbox Code Playgroud)

google-sheets google-apps-script

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

Folder.searchFiles() 方法引发“无效参数:q”错误

鉴于以下 Google Apps 脚本代码片段:

function myFunction() {
  var files = DriveApp.getFolderById('xxx').searchFiles('123')
  while (files.hasNext()) {
    var file = files.next()
      Logger.log(file.getName())
  }
}
Run Code Online (Sandbox Code Playgroud)

我越来越:

无效参数:q(第 x 行,文件“代码”)

while (files.hasNext())语句行。

该行不包含我知道的任何错误。有趣的是,当我.searchFiles('123')与交换时.getFiles(),错误不会出现并且代码会执行。

这是否意味着.searchFiles('123')返回的对象有问题(它应该返回FileIterator对象)?不幸的是,Javascript 只在运行时检查返回数据类型,所以在我运行它之前我无法真正查看它是否正确。

google-apps-script google-drive-api

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

用于填充电子表格列的一维数组

我正在使用内置的组服务来提取用户名列表...

function getUsersInGroup(group) {
  var usersInGroup = GroupsApp.getGroupByEmail(group).getUsers();
  return usersInGroup;
}
Run Code Online (Sandbox Code Playgroud)

...它返回一个数组,就像这样......

[ person1@email.com, person2@email.com, person3@email.com ]
Run Code Online (Sandbox Code Playgroud)

我希望这些电子邮件显示在这样的电子表格列中...... 电子表格 A 列中的电子邮件地址。 每个值都在单独的行中。

Apps Script 的 .setValues() 似乎需要一个二维数组,即使数据是“平坦的”,所以我从我的测试中得到的印象是我的数据必须采用这样的格式......

var data = [[person1@email.com],[person2@email.com],[person3@email.com]]
Run Code Online (Sandbox Code Playgroud)

如果我希望它显示为数据行而不是列中的一项。

如果我是对的,我想我正在寻找我的问题的两个(可能三个)可能答案中最好的答案。

我认为可能的解决方案

  1. 转换数组并使数组中的每一项都成为一个单项数组,可能有一个 for 循环

  2. 找出有一个更好的内置函数,可以将数组转换为一行数据

  3. 还有一些我可以做的事情,我什至没有在这里考虑过

google-sheets google-apps-script

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

Google Apps 脚本 URLFetchApp 权限

我是 GAS 的新手,我在权限系统方面很挣扎。

我是一个普通的 Google Drive 用户,我启动了一个电子表格并尝试向其中添加一些代码。我的代码可以工作,但前提是我在代码编辑器中。我想使用 onEdit() 函数,所以它也可以在工作表中工作对我来说很重要。当我第一次在编辑器中运行我的代码时,它打开了一个新窗口,我需要在其中输入我的凭据以允许脚本,然后它就可以工作了。如果我对工作表中的单元格进行一些更改并触发 onEdit() 函数,我会收到一条错误消息,内容如下(已翻译):

Exception: You are not permitted to call UrlFetchApp.fetch. Required permission: https://www.googleapis.com/auth/script.external_request
Run Code Online (Sandbox Code Playgroud)

在编辑器中,我显示了清单文件并向 oauthScopes 添加了权限,但在工作表中我仍然收到消息。这是我的代码的样子(简化):

function onEdit(e)
{
    var data = {
        'key1': 'value1',
        'key2': 'value2'
    };
    var options = {
        'method' : 'post',
        'contentType': 'application/json',
        'payload' : JSON.stringify(data)
    };
    try{
        var response = UrlFetchApp.fetch('https://a-working-url.com', options); //error happening in this line
        //some more data wizardry
    }catch(error)
    {
        Browser.msgBox(error)
    }

}
Run Code Online (Sandbox Code Playgroud)

任何想法如何在我的工作表中打开此权限屏幕或任何提示如何以不同的方式解决它?我想创建一个工作表,其中一些代码在后台运行。我想和一些朋友分享表格,之前用 Excel 和 VBA 尝试过,直到我意识到它不适用于 Excel Online,所以我切换到 GAS。

在此先感谢您的帮助 :)

permissions google-apps-script

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

Google Apps Script TextFinder startFrom 不是从

我正在尝试使用 TextFinder,但在我的电子表格中,我不想在结果中返回标题行或第 1 列。我看到 TextFinder 有一个“startFrom”方法,它应该让你定义“搜索应该开始的单元格范围”......但我似乎无法让它工作。

var tf=ss
       .createTextFinder(text)
       .useRegularExpression(true)
       .ignoreDiacritics(true)
       .startFrom(ss.getRange("B2"));
var all=tf.findAll();
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我得到了结果,它们仍然包含第 1 行和 A 列的匹配项。

google-apps-script

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