gpt4 book ai didi

google-apps-script - 如何使用Sheets API在最后一列之后插入列?

转载 作者:行者123 更新时间:2023-12-04 11:04:14 25 4
gpt4 key购买 nike

我有一个带有单个表的表:
spreadsheet structure
用POST方法和以下标头调用:POST 'https://sheets.googleapis.com/v4/spreadsheets/{my_id}/values/Sheet1!E1:append?valueInputOption=USER_ENTERED'

Authorization: Bearer {valid_auth_token}
Accept: application/json
Content-Type: application/json

而这个身体:
{
"majorDimension": "COLUMNS",
"values": [
["Header", "Hello"]
]
}

Header, Hello作为列添加到 E中。我的问题是:如何在不指定新范围的情况下在最后一列之后追加新列(在这种情况下为E1)?有什么办法吗?
通过以下调用: https://sheets.googleapis.com/v4/spreadsheets/{my_id}我可以获取表格名称,但无法获取范围,那么,我如何知道范围?

最佳答案

您想将HeaderHello的值放在电子表格上最后一列的下一列而不直接给出范围。
您想使用Sheets API实现此目的。
您已经可以使用Sheets API获取和放置Google Spreadsheet的值。


如果我的理解是正确的,那么这个答案呢?请认为这只是几个可能的答案之一。

问题和解决方法:

不幸的是,在当前阶段,Sheets API中没有方法可直接检索数据范围。尽管存在电子表格.values.append方法和电子表格.batchUpdate方法的AppendCellsRequest方法,但这些方法可用于将值放置到工作表上最后一行的下一行。这不是专栏。同样在这种情况下,无法检索数据范围。因此,为了达到您的目标,我想提出以下解决方法。

在这种解决方法中,Web Apps被用作包装器。客户端访问Web应用程序,然后Web应用程序检索数据范围并将值放在电子表格上最后一列的下一列。在这种情况下,访问Web Apps时不需要设置范围。

用法:

此替代方法的用法如下。

1.创建一个新的Google Apps脚本项目。

Web Apps的示例脚本是Google Apps脚本。因此,请创建一个Google Apps脚本项目。

如果要直接创建它,请访问https://script.new/。在这种情况下,如果您未登录Google,则会打开“登录”屏幕。因此,请登录到Google。这样,将打开Goog​​le Apps脚本的脚本编辑器。

2.复制并粘贴脚本。

请复制并粘贴以下脚本。

function doPost(e) {
var obj = JSON.parse(e.postData.contents);
var sheet = SpreadsheetApp.openById(obj.spreadsheetId).getSheetByName(obj.sheetName);
var values = obj.values;
sheet.getRange(1, sheet.getLastColumn() + 1, values.length, values[0].length).setValues(values);
return ContentService.createTextOutput("ok");
}



此示例脚本将值放在电子表格上最后一列的下一列。


3.部署Web应用程序。


在脚本编辑器上,通过“发布”->“部署为Web应用程序”打开一个对话框。
为“将应用程序执行为:”选择“我”。
为“谁有权访问该应用程序:”选择“只有我自己”。


当“任何人,甚至匿名”设置为“谁有权访问该应用程序:”时,不需要使用访问令牌。

单击“部署”按钮作为新的“项目版本”。
自动打开“需要授权”对话框。


点击“查看权限”。
选择自己的帐户。
点击“此应用未验证”中的“高级”。
单击“转到###项目名称###(不安全)”
点击“允许”按钮。

点击“确定”。
复制Web Apps的URL。就像 https://script.google.com/macros/s/###/exec


修改Google Apps脚本后,请重新部署为新版本。这样,修改后的脚本将反映到Web Apps。请注意这一点。



4.样品卷曲。

为了测试对Web应用程序的访问,请使用以下curl命令。

curl -L \
-H "Authorization: Bearer ###" \
-d '{"spreadsheetId": "###", "sheetName": "Sheet1", "values": [["Header"], ["Hello"]]}' \
"https://script.google.com/macros/s/###/exec"



请设置上面检索到的Web应用程序的URL以及电子表格ID和工作表名称。
在这种情况下,范围不需要包含在请求正文中。因为数据范围是在Web Apps的脚本中检索的。
当运行上述curl命令时,将 "Header""Hello"的值放在“ Sheet1”的工作表上最后一列的下一列。


注意:


例如,如果发生授权错误,请将“任何人,甚至匿名”设置为“谁有权访问该应用程序:”。在这种情况下,不需要使用访问令牌。
或者,请将 https://www.googleapis.com/auth/drive.readonly和/或 https://www.googleapis.com/auth/drive的范围包括在访问令牌中。


参考文献:


spreadsheets.values.append
AppendCellsRequest
Web Apps
Taking advantage of Web Apps with Google Apps Script


如果我误解了您的问题,而这不是您想要的方向,我深表歉意。

关于google-apps-script - 如何使用Sheets API在最后一列之后插入列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60007252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com