Google sheets TextRotation角度从未在Google Sheet API中设置

Google sheets TextRotation角度从未在Google Sheet API中设置,google-sheets,google-api,google-sheets-api,google-api-java-client,Google Sheets,Google Api,Google Sheets Api,Google Api Java Client,我使用的是来自Java客户端的GoogleSheetsAPIV4。我正在尝试从Cell类获取格式。一切顺利 文本旋转 我成功地获得了垂直属性集,但是,角度属性从未设置,无论我在源Google Sheets文档中设置了什么 无论在Google Sheet应用程序中选择了什么角度值,角度属性都不会设置。 我尝试检查返回的JSON,以了解问题是否在Java客户端中。 但JSON REST API也从不返回此属性 当前结果: . 预期结果: 问题和解决方法: 当我看到时,我认为textRotation

我使用的是来自Java客户端的GoogleSheetsAPIV4。我正在尝试从Cell类获取格式。一切顺利

文本旋转 我成功地获得了垂直属性集,但是,角度属性从未设置,无论我在源Google Sheets文档中设置了什么

无论在Google Sheet应用程序中选择了什么角度值,角度属性都不会设置。

我尝试检查返回的JSON,以了解问题是否在Java客户端中。
但JSON REST API也从不返回此属性

当前结果:
.
预期结果:

问题和解决方法: 当我看到时,我认为
textRotation
的值可以通过
sheets(data(rowData)(values(userEnteredFormat(textRotation)))
的字段检索,当使用“spreadsheets.get”方法时。但是当我测试这个时,没有返回任何值。所以我想这可能是个bug。当我在谷歌问题追踪器上搜索时,我发现。从这种情况来看,在当前阶段,似乎无法通过Sheets API的“spreadsheets.get”方法检索
textRotation
的值

当您想要使用脚本检索
textRotation
的值时,作为当前的解决方法,您可以使用Google Apps脚本创建的Web应用作为包装器来实现。在这个答复中,我想提出解决办法

当此变通方法反映到针对您的情况的流程中时,它将变成如下所示

用法: 1.创建谷歌应用程序脚本的新项目。 Web应用程序的示例脚本是Google应用程序脚本。因此,请创建一个谷歌应用程序脚本项目

如果要直接创建,请访问。在这种情况下,如果您没有登录Google,则会打开登录屏幕。所以请登录谷歌。这样,谷歌应用程序脚本的脚本编辑器就打开了

2.准备Web应用程序。(服务器端) 请将以下脚本(Google Apps脚本)复制并粘贴到脚本编辑器。此脚本用于Web应用程序。此Web应用程序用作API

服务器端:谷歌应用程序脚本

function doGet(e) {
  const key = "sampleKey";
  const id = e.parameter.spreadsheetId;
  const sheetName = e.parameter.sheetName;
  if (e.parameter.key != key || !id || !sheetName) {
    return ContentService.createTextOutput(JSON.stringify({message: "Error."})).setMimeType(ContentService.MimeType.JSON);
    }

  const sheet = SpreadsheetApp.openById(id).getSheetByName(sheetName);
  const textRotations = sheet.getDataRange().getTextRotations().map(r => r.map(c => ({angle: c.getDegrees(), vertical: c.isVertical()})));
  return ContentService.createTextOutput(JSON.stringify(textRotations)).setMimeType(ContentService.MimeType.JSON);
}
3.部署Web应用程序。
  • 在脚本编辑器上,通过“发布”->“部署为web应用”打开对话框
  • 选择“我”以执行应用程序:“”。
    • 这样,脚本将作为所有者运行
  • 为有权访问应用程序的用户选择“任何人,甚至匿名”
    • 当然,您可以在这种情况下使用访问令牌。但在本例中,作为一个简单的设置,我使用访问密钥而不是访问令牌
  • 单击“部署”按钮作为新的“项目版本”
  • 自动打开“需要授权”对话框。
  • 单击“查看权限”
  • 选择自己的帐户
  • 单击“此应用未验证”处的“高级”
  • 单击“转到####项目名称###(不安全)”
  • 单击“允许”按钮
  • 单击“确定”
  • 复制Web应用程序的URL。就像
    https://script.google.com/macros/s/###/exec
    • 当您修改Google Apps脚本时,请重新部署为新版本。这样,修改后的脚本将反映到Web应用程序中。请注意这一点。
  • 3.测试。 作为一个简单的测试,当它使用curl命令请求Web应用程序时,它会变成如下。请设置电子表格ID和工作表名称。正确部署Web应用程序后,将返回值

    $ curl -L "https://script.google.com/macros/s/###/exec?spreadsheetId=###&sheetName=Sheet1&key=sampleKey"
    
    [
        [{"angle":30,"vertical":false},{"angle":0,"vertical":true},{"angle":0,"vertical":false}],
        [{"angle":30,"vertical":false},{"angle":30,"vertical":false},{"angle":0,"vertical":false}]
    ]
    
    结果: 数据范围用于检索值。例如,当值设置为“Sheet1”中的单元格“A1:C3”时,将返回以下结果

    $ curl -L "https://script.google.com/macros/s/###/exec?spreadsheetId=###&sheetName=Sheet1&key=sampleKey"
    
    [
        [{"angle":30,"vertical":false},{"angle":0,"vertical":true},{"angle":0,"vertical":false}],
        [{"angle":30,"vertical":false},{"angle":30,"vertical":false},{"angle":0,"vertical":false}]
    ]
    
    • 在这种情况下,单元格“A1、A2、B2”的文本旋转为30度。并且,单元“B1”具有垂直方向
    注:
    • 修改Web应用脚本时,请将Web应用重新部署为新版本。这样,最新的脚本就会反映到Web应用程序中。请注意这一点。
    参考资料:

    非常感谢您的完整回答。但是在我的例子中,我不能使用这种变通方法——就性能而言,我不能运行两种不同的API来解析单个文件。特别是从我对谷歌应用程序脚本性能的了解来看我必须解析许多google sheet文件,并且我不能在每个文件上声明应用程序脚本,在架构方面,我必须在gsheet java api客户端上构建一个补丁,以链接到这个特定的应用程序脚本。不太轻,clear@Damien谢谢你的回复。首先,我为我的拙劣技能深表歉意。在当前阶段,您的目标无法通过可能是bug的问题直接实现。所以我提出了一个解决办法。但是从你的答复中,我可以知道我的建议对你的情况没有用处。对此我深表歉意。但我认为这种变通方法可能对其他用户有用。在这种情况下,我想留下我的答案。如果你允许的话,我很高兴。