当我使用库方法时,我希望能够仅复制电子表格及其所有工作表以及所有定义的工作表名称:
spreadSheet.copy(newSSName);
或者,
myFile.makeCopy(newNameOfFile);
目前,这些方法复制所有链接的表单和表单中使用的脚本。对于我所需要的东西来说,这是一个不必要的副作用,并且会导致驱动器文件夹中出现大混乱。有没有一种方法可以快速有效地完成此操作,而无需逐个单元格、逐个工作表地复制?或者这是唯一的选择?
谢谢。
google-sheets google-apps-script google-drive-api google-sheets-api
由于类似的问题都没有真正的答案,所以我会尝试一下。
我在预先存在的电子表格上使用 Google Sheets API。
A1我想将:中的公式复制=A7/A2到B1:=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()
有没有办法复制公式?
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)
有错误:
<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" …python google-authentication google-drive-api google-console-developer google-sheets-api
希望使用可安装的触发器获取新添加的工作表(手动添加)的名称。带有 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);
}}
javascript google-sheets google-apps-script google-sheets-api
我正在尝试使用 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 …google-api node.js google-drive-api google-api-nodejs-client google-sheets-api
我对此很陌生,所以请耐心等待——我目前在从 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) { …当我使用spreadsheets.values.update将数据写入工作表时,覆盖单元格中现有的工作表格式将被擦除。
request = sheet.values().update(spreadsheetId=spreadsheet_ID, range="Sheet1!A2", valueInputOption="USER_ENTERED", body={"values": retrievedData}).execute()
有没有办法保留工作表的格式,并且基本上只将值写入值?
显然,我可以将这些值写入其他工作表,然后在所需的工作表中引用这些值,但如果我可以直接实现目标,那就更好了。
有没有办法获取公共谷歌电子表格的单元格值?
GET https://sheets.googleapis.com/v4/spreadsheets/1vW01Y46DcpCC7aKLIUwV_W4RXLbeukVwF-G9AA7P7R0/values/A1A4?key=abcdef
返回 403。
我还在 Postman 中发送了Referrer:Mozilla/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"
                }
            }
        ]
    }
}
我正在尝试直接从客户端 JavaScript 访问公共工作表的数据。
没有与服务器的往返。我记得大约 10 年前这是可能的,但我无法找到文档。
我需要您的帮助来改进我的应用程序脚本代码,以便将数据集从 Google 表格中的 1 个文件复制到另一个文件。目前,完成此执行需要近 6 分钟,但我们的数据会增加数天。我的详细情况是
这是我的代码。
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")
  
  // // …optimization google-sheets google-apps-script google-sheets-api
javascript ×2
python ×2
api ×1
excel ×1
go ×1
google-api ×1
node.js ×1
optimization ×1
urlfetch ×1