我正在使用 Google 电子表格 API v4。我想通过 python 脚本删除一些行。我尝试了他们的示例代码,但出现以下错误
“requests[0].delete_dimension.range.sheet_id”处的值无效(TYPE_INT32)
我的代码:
batch_update_spreadsheet_request_body = {
"requests": [
{
"deleteDimension": {
"range": {
"sheetId": sheetId,
"dimension": "ROWS",
"startIndex": 0,
"endIndex": 3
}
}
},
{
"deleteDimension": {
"range": {
"sheetId": sheetId,
"dimension": "COLUMNS",
"startIndex": 1,
"endIndex": 4
}
}
},
],
}
request = sheets_service.spreadsheets().batchUpdate(spreadsheetId=sheetId, body=batch_update_spreadsheet_request_body)
response = request.execute()
Run Code Online (Sandbox Code Playgroud)
完整的追溯
回溯(最近一次调用):文件“/home/yahia/DSP_Project_Server_Software/python_scripts/TMSA/TMSA.py”,第 70 行,在 main() 文件“/home/yahia/DSP_Project_Server_Software/python_scripts/TMSA/TMSA.py”中,第 67 行,在主响应中 = request.execute() 文件“/usr/local/lib/python2.7/dist-packages/oauth2client/_helpers.py”,第 133 行,在 positional_wrapper 中 return wrapped(*args, ** kwargs) 文件“/usr/local/lib/python2.7/dist-packages/googleapiclient/http.py”,第 840 行,在执行 raise HttpError(resp, content, …
目前我有这个公式:
=QUERY(A:C,"select SUM(B), SUM(C) where A = date """&text("26/10/2017","yyyy-mm-dd")&""" label SUM(B) '', label SUM(C) '' ")
Run Code Online (Sandbox Code Playgroud)
如果我放第二个标签,这个公式会给我一个错误。该公式仅适用于一个选择和一个标签,但不适用于两个。
搜索时我没有找到这种方法的替代方法?
我也尝试过:
label sum SUM(B) '', SUM(C) ''
Run Code Online (Sandbox Code Playgroud)
我怎么能有多个标签,有什么想法吗?
sql google-visualization google-apps google-sheets google-spreadsheet-api
2010年3月29日,Jason Hale想要使用电子表格光标位置为他正在编写的Javascript应用程序选择一个电子邮件地址 - 请参阅http://productforums.google.com/forum/#!topic/apps-script/ U10q44vptPU.受访者建议使用getActiveSelection和伴随的getRowIndex/getColumnIndex方法.不幸的是,他们没有为Hale工作,两年后当我想写一个类似的应用程序时,他们没有为我工作.光标的位置对getRowIndex和getColumnIndex没有影响.这些方法总是返回1,这是无用的,可能是一个bug.Google Apps缺少游戏服务,例如Python提供的服务.有没有人发现Google Apps返回的内容可能在此上下文中有用?
javascript google-sheets google-apps-script google-spreadsheet-api
我的问题是如何确保在并发访问时不会丢失任何数据.
我将脚本发布为web-app.我想在DATA_SHEET中添加新行.处理提交按钮的功能如下所示:
function onButtonSubmit(e) {
var app = UiApp.getActiveApplication();
var lock = LockService.getPublicLock();
while (! lock.tryLock(1000))
;
var ssheet = SpreadsheetApp.openById(SHEET_ID);
var sheet = ssheet.getSheetByName(DATA_SHEET);
var lastRow = sheet.getLastRow();
var lastCol = sheet.getLastColumn();
var rangeToInsert = sheet.getRange(lastRow+1, 1, 1, lastCol);
var statText = rangeToInsert.getA1Notation();
rangeToInsert.setValues(<some data from webapp form>);
app.getElementById('statusLabel').setText(statText);
lock.releaseLock();
return app;
}
Run Code Online (Sandbox Code Playgroud)
但似乎这不起作用.当我打开两个表单并在一秒钟内单击"提交"按钮时,它会在statsLabel中显示相同的范围并将数据写入相同的范围.所以我从一个表单中丢失了数据.
这段代码有什么问题?似乎tryLock()不会阻止脚本.
有没有其他方法可以防止对工作表的并发写访问?
我有一个Google Spreadsheet,我想用Python获取,然后通过JSON处理它.它已经完成了一半,在浏览Stackoverflow几个小时后,我认为是时候提问了.
例如,JSON文件的格式如下所示(来自https://developers.google.com/gdata/docs/json).
{
"version": "1.0",
"encoding": "UTF-8",
"feed": {
"xmlns": "http://www.w3.org/2005/Atom",
"xmlns$openSearch": "http://a9.com/-/spec/opensearchrss/1.0/",
"xmlns$gd": "http://schemas.google.com/g/2005",
"xmlns$gCal": "http://schemas.google.com/gCal/2005",
"id": {"$t": "..."},
"updated": {"$t": "2006-11-12T21:25:30.000Z"},
"title": {
"type": "text",
"$t": "Google Developer Events"
},
"subtitle": {
"type": "text",
"$t": "The calendar contains information about upcoming developer
conferences at which Google will be speaking, along with other
developer-related events."
},
"link": [{
"rel": "...",
"type": "application/atom+xml",
"href": "..."
},{
"rel": "self",
"type": "application/atom+xml",
"href": "..."
}],
"author": [{
"name": {"$t": …Run Code Online (Sandbox Code Playgroud) python json google-sheets google-spreadsheet-api python-requests
我正在尝试使用python脚本访问google docs中的电子表格.但是在执行以下"标准"示例时,我总是会遇到错误:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import time
import gdata.spreadsheet.service
if __name__ == "__main__":
email = 'email@gmail.com'
password = 'secret'
weight = '180'
# Find this value in the url with 'key=XXX' and copy XXX below
spreadsheet_key = '0AiKRVC_dEsdfafdC1Id2FGdGVMR1pHb3E4UGlmbUYxS1E'
# All spreadsheets have worksheets. I think worksheet #1 by default always
# has a value of 'od6'
worksheet_id = 'od6'
spr_client = gdata.spreadsheet.service.SpreadsheetsService()
spr_client.email = email
spr_client.password = password
spr_client.source = 'Example Spreadsheet Writing Application'
spr_client.ProgrammaticLogin()
# Prepare …Run Code Online (Sandbox Code Playgroud) 我打算使用Google电子表格API从电子表格中获取数据,并使用Sencha Touch在我的移动应用中呈现它.我见过很少的博客和教程解释了如何获取和解析数据,但是当我尝试相同的时候,我没有将列智能数据作为entry对象中的属性,而是在content标记中获得逗号分隔的数据.
举个例子,这里是示例电子表格,其中我有更改标题和数据:
https://docs.google.com/spreadsheet/ccc?key=0AkEOCoTxRKgvdDRZUnViSFlOVUF0QUJybkZ6VlBwTkE#gid=0
这是它的饲料:
但是当我创建了同一个电子表格手工从头开始,我没有得到gsx$name与gsx$processedlinkurl在JSON属性.这是这张表:
https://docs.google.com/spreadsheet/ccc?key=0AgduEz3vmQUTdHZlSEI4bjN6VnZ5TVpRMFlyOVAtR0E#gid=0
这是JSON:
要将第一行标记为标题我已经冻结了我的工作表中的第一行仍然JSON没有在JSON中给我标题明智的数据.
我在原始Google电子表格的克隆中制作了一个有效的绑定脚本,并在几天的时间内组合在一起.
然后我将我的公式复制到新的电子表格中.
突然之间,即使我认为我没有对任何相关代码进行任何更改,我也看到了"引用错误:"日历"未定义为谷歌API".
我有很多代码,所以很难将其全部粘贴,但相关部分在这里:
var start = (passed as argument to function);
var end = (passed as argument to function);
var calendarId = 'redacted'//source calendar
var optionalArgs = {
timeMin: start.toISOString(),
timeMax: end.toISOString(),
showDeleted: false,
singleEvents: true,
maxResults: null,
orderBy: 'startTime'
};
var response = Calendar.Events.list(calendarId, optionalArgs);
Run Code Online (Sandbox Code Playgroud) 我有一个脚本,创建一个空的谷歌电子表格.创建谷歌电子表格后.我怎么能在里面添加一些数据?
只是一些字符串就足够了
用于创建文件的脚本:
function createSpread()
{
var name = $('[name=id]').val();
gapi.client.load('drive', 'v2', function() {
var request = gapi.client.request({
'path': '/drive/v2/files/',
'method': 'POST',
'headers': {
'Content-Type': 'application/json',
},
'body':{
"title" : name,
"mimeType" : "application/vnd.google-apps.spreadsheet",
"parents": [{
"kind": "drive#file",
"id": FOLDER_ID,
}],
}
});
request.execute(function(resp) { console.log(resp)
});
});
}
Run Code Online (Sandbox Code Playgroud)
你能帮助别人吗?
提前致谢
javascript google-sheets google-spreadsheet-api google-drive-api
现在,我正在使用gspread和Google Sheets API更新单元格值,并将其设置为cell.value等于特定公式的字符串。
示例代码:
# Calculates sum of cells in current row from column B to H
G_SHEETS_ROW_SUM_COMMAND = '''=SUM(INDIRECT(CONCATENATE("B",ROW(),":H",ROW())))'''
for cell in cell_list:
cell.value = G_SHEETS_ROW_SUM_COMMAND
Run Code Online (Sandbox Code Playgroud)
但是,当我填写电子表格时,我的命令前面会带有撇号(大概是为了防止该单元格被解释为公式,尽管这正是我想要的操作)。
这是我的电子表格中的一个示例:
有没有一种方法可以自动删除此撇号?
我研究了值呈现选项和input_value,尽管这些选项似乎不适用于写入工作表。