小编teh*_*wch的帖子

Google SpreadSheet查询:我可以删除列标题吗?

我在google电子表格中执行此查询:

=QUERY(H4:L35;"select sum(L) where H='First Week'"; -1)
Run Code Online (Sandbox Code Playgroud)

但是它返回一个带有"sum"的小表作为标题和结果在它下面.我想要的只是结果!我如何删除标题?我可以吗?

formulas google-sheets google-query-language google-sheets-query

82
推荐指数
3
解决办法
6万
查看次数

使用单元格引用的查询语法

我在Google Spreadsheets中找出一个相当简单的QUERY语句时遇到了麻烦.我正在尝试使用单元格引用而不是静态值,我遇到了麻烦.下面是我正在使用的代码,但我不断收到"错误:公式解析错误".

=QUERY(Responses!B1:I, "Select B where G contains"& $B1 &)
Run Code Online (Sandbox Code Playgroud)

我确定这是一个简单的错误,但有人可以告诉我如何编写上面的内容,以便QUERY从B中提取数据,其中G包含单元格B1中的值(单元格引用)?

google-sheets google-sheets-query

38
推荐指数
6
解决办法
9万
查看次数

生成类似于Google Tasks API的RFC 3339时间戳?

我正在构建与Google Tasks同步的应用.作为同步的一部分,我想比较本地任务和API任务,并查看最近更改了哪一个.

Google API的每项任务都包含一个updated属性,如下所示:

2011-08-30T13:22:53.108Z
Run Code Online (Sandbox Code Playgroud)

现在我想生成一个类似的时间戳,这样每次我在我的应用程序上更新任务时它都会设置一个新updated值.要生成我使用的RFC 3339时间戳 - http://cbas.pandion.im/2009/10/generating-rfc-3339-timestamps-in.html生成如下内容:

2011-08-30T09:30:16.768-04:00
Run Code Online (Sandbox Code Playgroud)

问题是,即使本地日期较新,API日期也总是比本地日期"更大".我猜这与两者之间的不同格式有关.

以下是两个日期,顶部来自Google Tasks API(大约10分钟前),而底部日期是在一分钟前在本地生成的.当比较哪个更大时,它告诉我最重要的是.

2011-08-30T13:22:53.108Z
2011-08-30T09:41:00.735-04:00
Run Code Online (Sandbox Code Playgroud)

我的格式错了吗?我在这做错了什么?对此的任何帮助都非常感谢.

javascript timestamp rfc3339 google-tasks google-tasks-api

27
推荐指数
3
解决办法
5万
查看次数

使用Google暂时禁用此应用

在尝试向Google进行身份验证时,我们正面临以下屏幕.我们尝试进行身份验证的应用程序用于内部开发,我们没有将其发布给用户.

知道为什么会这样吗?

在此输入图像描述

我们之前遇到了未验证的应用程序屏幕(如下所示),但现在身份验证已禁用.

在此输入图像描述

google-api oauth-2.0 google-oauth google-signin

24
推荐指数
2
解决办法
4万
查看次数

按名称获取表格

我正在尝试使用以下公式:

function setDataValid(range, sourceRange) {
  var rule = SpreadsheetApp.newDataValidation().requireValueInRange(sourceRange, true).build();
  range.setDataValidation(rule);
}

function onEdit() {
  var aCell = SpreadsheetApp.getActiveSheet().getActiveCell();
  var aColumn = aCell.getColumn();

  if (aColumn == 2 && SpreadsheetApp.getActiveSheet().getName() == 'Local' ) {
    var range = SpreadsheetApp.getActiveSheet().getRange(aCell.getRow(), aColumn + 1);
    var sourceRange = SpreadsheetApp.getActiveSpreadsheet().getRangeByName(aCell.getValue());
    setDataValid(range, sourceRange)
  }
}
Run Code Online (Sandbox Code Playgroud)

调试onEdit()时,它显示setDataValid(range,sourceRange)中的sourceRange为null.由于范围在我的工作表'Local'中,我试图将getActiveSpreadsheet()更改为按名称获取电子表格.有谁可以提供帮助?

google-sheets google-apps-script

19
推荐指数
2
解决办法
3万
查看次数

Gmail加载项触发条件

有人能准确描述Gmail附加脚本的触发条件吗?显然,每次用户在Gmail对话之间导航时都不会调用触发器.

我能找到的唯一文档是https://developers.google.com/gmail/add-ons/how-tos/building#note1,其中说明

唯一可用的上下文触发器类型是无条件的,无论内容如何,​​都会触发所有电子邮件.

我将此解释为每次用户导航到不同的gmail对话时都会调用触发器,但事实并非如此:

我第一次导航到某个Gmail对话时,会触发加载项触发器.当我使用"较新"或"较旧"角括号按钮导航到另一个对话时,再次为新对话调用触发器.但是,当我浏览用尖括号按钮,第一页,附加上触发器也不会触发.(很容易通过在创建每个UI卡时显示时间戳来显示这一点.)似乎有某种内部缓存正在进行 - 有没有办法禁用它,或者每次用户运行我的附加脚本在Gmail对话之间导航?

google-apps-script gmail-addons

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

使用C#和Sheets API v4更新Cell

有没有人有一个很好的C#示例用于使用v4 API更新单元格?

我在使用Google表格API v4的开发者网站上获得了获取单元格值c#示例.我试图修改示例以更新值为"Tom"的单元格.我坚持设置SpreadSheets.Values.Update.

using Google.Apis.Auth.OAuth2;
using Google.Apis.Sheets.v4;
using Google.Apis.Sheets.v4.Data;
using Google.Apis.Services;
using Google.Apis.Util.Store;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace GoogleSheetsAPI4_v1console
    {
    class Program
    {
        // If modifying these scopes, delete your previously saved credentials
        // at ~/.credentials/sheets.googleapis.com-dotnet-quickstart.json
        static string[] Scopes = { SheetsService.Scope.Spreadsheet };
        static string ApplicationName = "TestSpreadsheet";

        static void Main(string[] args)
        {
            UserCredential credential;

            using (var stream =
                new FileStream("client_secret.json", FileMode.Open, FileAccess.Read))
            {
                string credPath = …
Run Code Online (Sandbox Code Playgroud)

c# google-api google-sheets google-api-dotnet-client google-sheets-api

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

如何制作电子表格副本并将其保存到特定文件夹?

我正在使用Google App Script.我在尝试着:

  1. 制作电子表格的副本
  2. 为副本提供特定的文件名,和
  3. 将其保存到特定文件夹.

在我看来,下面的代码应该可行,但事实并非如此.它确实完成了任务1和3 - 也就是说,它会复制并将副本保存到我想要的文件夹中.但是,它不会使用我指定的文件名保存文件.相反,它将其保存为"[原始电子表格文件名]的副本".要做到这一点,我正在使用File#makeCopy

(注意:我知道此问题之前已经得到解答,但我相信自谷歌日落以来,DocList服务尚未得到解答.)

当我制作这个简化的MCVE时,我发现它按预期工作:

function saveAsSpreadsheet() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var destFolder = DriveApp.getFolderById("xxxxxxxxxxxxxxxxx");
  DriveApp.getFileById(sheet.getId()).makeCopy("desired file name", destFolder);
} //END function saveAsSpreadsheet
Run Code Online (Sandbox Code Playgroud)

但是,我的原始代码没有 - 副本的名称是错误的:

function saveAsSpreadsheet() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var buildingNameAddress = sheet.getRangeByName('buildingNameAddress').getValue();
  Logger.log(buildingNameAddress); //Logs correct string
  var destFolder = DriveApp.getFolderById("xxxxxxxxxxxxxxxxxxxxxx");
  DriveApp.getFileById(sheet.getId()).makeCopy(buildingNameAddress, destFolder);
}
Run Code Online (Sandbox Code Playgroud)

google-sheets google-apps-script google-drive-api

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

Google Drive API,Oauth和服务帐户

我在使用Google Drive API,服务帐户和身份验证时遇到了一些问题.我读了很多,但我无法弄清楚如何解决这个问题.

上下文:我的云端硬盘帐户上有一些文件(约35GB)和一个简单的网络应用程序,用户可以登录,查看我的驱动器中的一些选定的文件夹/文件,并在需要时下载它们.唯一可以直接访问我的云端硬盘帐户的是(或应该是)我的服务器,用户通过网络应用/服务器进行操作.

经过一番搜索,我找到了服务器到服务器的授权文档,这些文档应该是完美的,但我可以看到,服务帐户不共享相同的驱动器空间:它们有自己的,并且不可升级.由于这个(奇怪的)限制我不能使用服务帐户,因为我有超过35GB,我需要"分享"一切.

其他方式:使用"标准"OAuth以获取访问令牌,然后使用它来调用Drive API,但访问令牌有一个过期日期,我无法每次手动更新它.

所以,第一个问题:有没有办法增加服务帐户的配额?如果没有,是否有办法使用我的"普通"帐户(所有者)充当服务帐户?

第二个(虚拟)问题:我阅读了有关创建新OAuth凭据的文档,最后您获得了一些示例代码和"client-secret"JSON.我运行示例但我不明白该JSON文件的作用是什么:我必须登录并给予许可,我为什么需要它?

第三个(虚拟的)问题:如果OAuth是唯一的解决方案,是否有办法获取/刷新访问令牌而不是每次都手动执行?我查看了OAuth文档,"用户交互/确认"是auth流程中的基本内容之一,所以我认为不可能.

google-drive-api google-oauth service-accounts

11
推荐指数
2
解决办法
8748
查看次数

操纵PositionedImage并在Google文档中围绕图像包装文本

我使用以下代码段将图片插入Google文档:

// Source: http://stackoverflow.com/a/18859986/1536038
var doc = DocumentApp.openById('Google Drive Id');
var img = DriveApp.getFileById('Google Drive Id').getBlob(); 
doc.getBody().insertImage(0, img);
Run Code Online (Sandbox Code Playgroud)

结果是一张In line图片:
在此输入图像描述

但是,我希望有一个Wrap text图像,如下所示: 在此输入图像描述

这可以通过Google Apps脚本(动态)吗?

google-docs google-apps-script

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