私は長い間、この問題を解決しようと試みています。 gspreadのドキュメントを読みましたが、ワークシートの名前を変更する方法が見つかりません。方法を知っている人はいますか?よろしくお願いします!確かにワークシートの名前を与えるworksheet.titleがありますが、実際のシートの名前を変更する方法が見つかりません。
前もって感謝します!
これは私が個人的にコーディングしたライブラリの抜粋です:
def _batch(self, requests):
body = {
'requests': requests
}
return self._service.spreadsheets().batchUpdate(spreadsheetId=self.spreadsheetId, body=body).execute()
def renameSheet(self, sheetId, newName):
return self._batch({
"updateSheetProperties": {
"properties": {
"sheetId": sheetId,
"title": newName,
},
"fields": "title",
}
})
少しの努力で、それをコードに実装して、必要なものを取得できると思います。 batchUpdate
呼び出しを行うには、 Python QUickstart-Google Sheet API で説明されているように、spreadsheetIdと初期化されたservice
が必要です。
あなたの答えは、PythonからのHTTPリクエストを介して解決できます。
リンクは ここ
HTTP経由でワークシートのある種のメタデータを送信する必要があります。
たとえば、Pythonを使用してワークシートのIDを取得し、次の情報を送信します。
<entry>
<id>
https://spreadsheets.google.com/feeds/worksheets/key/private/full/worksheetId
</id>
<updated>2007-07-30T18:51:30.666Z</updated>
<category scheme="http://schemas.google.com/spreadsheets/2006"
term="http://schemas.google.com/spreadsheets/2006#worksheet"/>
<title type="text">Income</title>
<content type="text">Expenses</content>
<link rel="http://schemas.google.com/spreadsheets/2006#listfeed"
type="application/atom+xml" href="https://spreadsheets.google.com/feeds/list/key/worksheetId/private/full"/>
<link rel="http://schemas.google.com/spreadsheets/2006#cellsfeed"
type="application/atom+xml" href="https://spreadsheets.google.com/feeds/cells/key/worksheetId/private/full"/>
<link rel="self" type="application/atom+xml"
href="https://spreadsheets.google.com/feeds/worksheets/key/private/full/worksheetId"/>
<link rel="edit" type="application/atom+xml"
href="https://spreadsheets.google.com/feeds/worksheets/key/private/full/worksheetId/version"/>
<gs:rowCount>45</gs:rowCount>
<gs:colCount>15</gs:colCount>
</entry>
WebサイトにはJavaおよび.NETソリューションも含まれています(これはレガシーバージョン3用です)。
新しいバージョンでは、POST httpリクエストPythonからのhttpリクエストも使用して、バッチ更新を使用できます。
リンクは ここ
リクエストのデータは
{
"requests": [{
"updateSpreadsheetProperties": {
"properties": {"title": "My New Title"},
"fields": "title"
}
}]
}
POST to https://sheets.googleapis.com/v4/spreadsheets/spreadsheetId:batchUpdate 経由で送信されます
どちらのリクエストでも、URLのスプレッドシートIDを、編集しているGoogleスプレッドシートのIDに置き換えます。
URLのv3からv4への変更に注意してください。
バージョン3のアプリケーションを使用していて、移行したい場合、そのリンクは here です。
コメント投稿者は、2番目のリクエストはワークシートの名前を変更しないことに注意しました。追加したリンクは、ワークシートの複雑なプロパティを変更する方法を示しています。まもなく回答を更新します。
あなたはAPI v4のgspreadポートで同じことを達成できます: pygsheets (ここに著者)。
Pygsheetsを使用する対応するコードは次のようになります。
import pygsheets
gc = pygsheets.authorize()
# open spreadsheet and then worksheet
sh = gc.open('my new spreadsheet')
wks = sh.sheet1
wks.title = 'new title'
Nodeを使用している場合、ここで私のために働いたものです:
import {google} from 'googleapis';
const auth = new google.auth.OAuth2(...)
const sheetsService = google.sheets({version: 'v4', auth})
const requests = [
{
updateSheetProperties: {
properties: {
sheetId: 'id-of-the-sheet-that-you-want-to-rename',
title: 'new-title',
},
fields: 'title'
}
}
];
sheetsService.spreadsheets.batchUpdate({
spreadsheetId: 'some-spreasheet-id',
requestBody: {
requests,
},
});
これは、Google APIメソッドでのみ実装することもできます。
これはjsonフリーのソリューションです。
sheetsService = getSheetsService();
// create a SheetProperty object and put there all your parameters (new title, sheet id, something else)
SheetProperties title = new SheetProperties().setSheetId(0).setTitle("Main");
// make a request with this properties
UpdateSheetPropertiesRequest rename = new UpdateSheetPropertiesRequest().setProperties(title);
// set fields you want to update
rename.setFields("title");
// as requestBody.setRequests gets a list, you need to compose an list from your request
List<Request> requests = new ArrayList<>();
// convert to Request
Request request = new Request().setUpdateSheetProperties(rename);
requests.add(request);
BatchUpdateSpreadsheetRequest requestBody = new BatchUpdateSpreadsheetRequest();
requestBody.setRequests(requests);
// now you can execute batchUpdate with your sheetsService and SHEET_ID
sheetsService.spreadsheets().batchUpdate(SHEET_ID, requestBody).execute();
ここ あなたはsheetPropertiesでより多くの情報を見つけることができます