标签: google-sheets-api

复制电子表格也会复制所有链接的文件

当我使用库方法时,我希望能够仅复制电子表格及其所有工作表以及所有定义的工作表名称:

spreadSheet.copy(newSSName);
Run Code Online (Sandbox Code Playgroud)

或者,

myFile.makeCopy(newNameOfFile);
Run Code Online (Sandbox Code Playgroud)

目前,这些方法复制所有链接的表单和表单中使用的脚本。对于我所需要的东西来说,这是一个不必要的副作用,并且会导致驱动器文件夹中出现大混乱。有没有一种方法可以快速有效地完成此操作,而无需逐个单元格、逐个工作表地复制?或者这是唯一的选择?

谢谢。

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

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

Google Sheets API:从单元格复制公式

由于类似的问题都没有真正的答案,所以我会尝试一下。

我在预先存在的电子表格上使用 Google Sheets API。

A1我想将:中的公式复制=A7/A2B1:=B7/B2

我可以很好地复制内容,但不能复制公式:

body = {'values': [[result.get("values")[0]]]}
new_range = 'B1'
up_result = sheet.values().update(
spreadsheetId=SPREADSHEET_ID, range=new_range, 
    valueInputOption='USER_ENTERED', body=body).execute()
Run Code Online (Sandbox Code Playgroud)

有没有办法复制公式?

excel google-sheets google-sheets-api google-sheets-formula

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

如何在 Python 中使用服务帐户凭据创建 Google 表格?

Service Account Credentials 我在这里创建并得到了 json key service.json

然后我尝试:

from google.oauth2 import service_account

SCOPES = ['https://www.googleapis.com/auth/spreadsheets']
credentials = service_account.Credentials.from_service_account_file(
        'service.json', scopes=SCOPES)

drive = build('drive', 'v3', credentials=credentials)
file_metadata = {
    'name': 'sampleName',
    'parents': ['#### folderId ###'],
    'mimeType': 'application/vnd.google-apps.spreadsheet',
}
res = drive.files().create(body=file_metadata).execute()
print(res)
Run Code Online (Sandbox Code Playgroud)

有错误:

<HttpError 403 when requesting https://www.googleapis.com/drive/v3/files?alt=json returned "Insufficient Permission: Request had insufficient authentication scopes.">

{
 "error": {
  "errors": [
   {
    "domain": "usageLimits",
    "reason": "dailyLimitExceededUnreg",
    "message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.",
    "extendedHelp": "https://code.google.com/apis/console" …
Run Code Online (Sandbox Code Playgroud)

python google-authentication google-drive-api google-console-developer google-sheets-api

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

无法使用changeType INSERT_GRID触发器getname()新添加的谷歌工作表

希望使用可安装的触发器获取新添加的工作表(手动添加)的名称。带有 INSERT_GRID 的 ChangeType 对我来说工作得很好(通过在添加工作表时输出一些随机值进行测试),但是当我尝试获取新添加的工作表的名称时,它却给了我文档中第一个工作表名称的值。

还有其他选择吗?听说这可能是应用程序脚本中以前的错误。

function log(e)
{
if (e.changeType === "INSERT_GRID") {  
     var news = e.source.getActiveSheet().getName(); //fails to get correct value
     e.source.getSheetByName("Client").getRange(1, 1).setValue(news);
}}
Run Code Online (Sandbox Code Playgroud)

javascript google-sheets google-apps-script google-sheets-api

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

使用 google apis 更改 google 电子表格的访问权限

我正在尝试使用 google API 更改我的 google 电子表格的可访问权限,我已经使用 google API 使用我的 google 服务帐户创建了它。

我还可以将其所有权授予其他电子邮件地址并保留自己的编辑权限吗?

生成代码(我使用的是node js):-

const client = new google.auth.JWT(
  keys.client_email,
  null,
  keys.private_key,
  ['https://www.googleapis.com/auth/spreadsheets']
);

client.authorize((err, tokens) => {
  if (err) {
    console.log('sheet auth err', err);
    return;
  }
  console.log('success auth');
});

app.post('/generateSheet', async (req, res, next) => {
  const { userId, sheetName } = req.body;
  console.log(userId, sheetName);
  // return res.redirect('/');
  const integrationName = 'Google_Sheets';

    const data = req.body;
  try {
    // const integrationInfoSnapshot = await db
        //  .doc(`integrationParameters/${integrationName}`)
    //   .get();
    try …
Run Code Online (Sandbox Code Playgroud)

google-api node.js google-drive-api google-api-nodejs-client google-sheets-api

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

Google Apps 脚本/URLFetchApp 并使用返回的数据

我对此很陌生,所以请耐心等待——我目前在从 Google 表单答案生成的 Google 表格后端有一个可操作的 Google Apps 脚本。我本质上是在 google 表单中设置一个票务表单,它将触发相应工作表中的数据通过 api 调用发送到我们的票务系统。它工作得很好,但我目前正在尝试优化它。目标是获取我使用的 json 响应:

Logger.log(response.getContentText());

它为我提供了以下信息:

Aug 9, 2020, 11:44:40 AM Info {"_url":"https://testticketingsystem.com/REST/2.0/ticket/123456","type":"ticket","id":"123456"}

并发送另一个 API 调用以将数据发送到该新工单。

这是一个代码片段:

var payload = { 
    "Subject":  String(su),
    "Content":  String(as),
    "Requestor": String(em),
    "Queue": String(qu),
    "CustomFields": {"CustomField1": String(vn), "CustomField2": String(vb), "CustomField3": 
     String(vg), "CustomField4": String(av), "CustomField5": String(ov), "CustomField6": 
     String(sd)}
     }

var options = {
      'method': 'post',
      "contentType" : "application/json",
      'payload': JSON.stringify(payload),
      'muteHttpExceptions': true
       }

var url = "https://testticketingsystem.com/REST/2.0/ticket?token=****************";

var response = UrlFetchApp.fetch(url,options);

Logger.log(response.getContentText());
  
  } catch (error) { …
Run Code Online (Sandbox Code Playgroud)

api urlfetch google-apps-script google-sheets-api

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

Google Sheets python api - 如何在保留工作表格式的同时将值写入工作表?

当我使用spreadsheets.values.update将数据写入工作表时,覆盖单元格中现有的工作表格式将被擦除。

request = sheet.values().update(spreadsheetId=spreadsheet_ID, range="Sheet1!A2", valueInputOption="USER_ENTERED", body={"values": retrievedData}).execute()
Run Code Online (Sandbox Code Playgroud)

有没有办法保留工作表的格式,并且基本上只将值写入值?

显然,我可以将这些值写入其他工作表,然后在所需的工作表中引用这些值,但如果我可以直接实现目标,那就更好了。

python google-sheets-api

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

将索引转换为 A1 列表示法,反之亦然

如何将索引(即 53)转换为列引用(即 GoLang 中的 BA)?下表显示了列和索引的双向预期输出。

也就是说,如果你投入703,你就会得到AAA。如果你投入YOU,你就会得到17311

索引表的示例列

go google-sheets-api

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

直接从客户端 JavaScript 访问公共 Google 工作表的数据

有没有办法获取公共谷歌电子表格的单元格值?

GET https://sheets.googleapis.com/v4/spreadsheets/1vW01Y46DcpCC7aKLIUwV_W4RXLbeukVwF-G9AA7P7R0/values/A1A4?key=abcdef
Run Code Online (Sandbox Code Playgroud)

返回 403。

我还在 Postman 中发送了ReferrerMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Safari/537.36

{
    "error": {
        "code": 403,
        "message": "Requests from referer Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Safari/537.36 are blocked.",
        "status": "PERMISSION_DENIED",
        "details": [
            {
                "@type": "type.googleapis.com/google.rpc.ErrorInfo",
                "reason": "API_KEY_HTTP_REFERRER_BLOCKED",
                "domain": "googleapis.com",
                "metadata": {
                    "consumer": "projects/666",
                    "service": "sheets.googleapis.com"
                }
            }
        ]
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试直接从客户端 JavaScript 访问公共工作表的数据。

没有与服务器的往返。我记得大约 10 年前这是可能的,但我无法找到文档。

javascript google-sheets google-sheets-api

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

如何加快将大数据从一个文件复制到另一个文件的速度?

我需要您的帮助来改进我的应用程序脚本代码,以便将数据集从 Google 表格中的 1 个文件复制到另一个文件。目前,完成此执行需要近 6 分钟,但我们的数据会增加数天。我的详细情况是

  • 在源文件中,工作表数据库的范围为 A1:U11834。但行数会逐日增加。
  • 在目标文件中,我还有一个工作表名称数据库,我想清除旧数据,然后将上述源数据复制到该工作表中。

这是我的代码。

function getdata(){

  let ss = SpreadsheetApp

  // open source file and sheet Database

  let source_file = ss.openById("id_source_file")
  let source_sht_copy = source_file.getSheetByName("Database")

  // Get full range of data
  let lr = source_sht_copy.getRange("A1").getDataRegion().getLastRow()
  let actual_range = `A1:U${lr}`

  Logger.log(actual_range)

  let source_data = source_sht_copy.getRange(actual_range).getValues()
  Logger.log("Copy Done")
  
  // Open destination file
  
  let dest_file = ss.openById("id_dest_file")
  let dest_sht = dest_file.getSheetByName("Database")

  // //clear content sheet database of destination file
  dest_sht.clearContents()
  Logger.log("Delete Old Data Done")

  
  // // …
Run Code Online (Sandbox Code Playgroud)

optimization google-sheets google-apps-script google-sheets-api

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