我有一個使用 Sheets API 的獨立腳本。只有兩個呼叫:
SpreadsheetApp.openById(spreadsheetID).getSheetByName("Answers")
SpreadsheetApp.openById(otherspreadsheetID).getSheetByName("Questions").getDataRange().getValues()
所以它從一個檔案讀取并寫入另一個檔案。該腳本設定為像我一樣作為 web 應用程式運行,因此在初始運行時,默認情況下,這會觸發廣泛的范圍來查看/編輯/洗掉所有作業表。我想限制一下。我看到這是我可以手動設定的范圍:https : //www.googleapis.com/auth/drive.file ( docs )。
但是我不知道如何將我的兩個電子表格設定為應用程式“打開或創建”的檔案,以便范圍對這些檔案有效。我嘗試創建一個創建兩個新作業表的函式(我認為這算作“您使用此應用程式創建的驅動器檔案”),但即使該Spreadsheetapp.create()函式也會引發“無權限”錯誤。
我可能誤解了這個范圍是如何作業的?
uj5u.com熱心網友回復:
問題和解決方法:
當SpreadsheetApp.openById()使用時,使用范圍https://www.googleapis.com/auth/spreadsheets。似乎這是當前的規范。
那么,作為一種解決方法,如何使用 Sheets API?使用 Sheets API 時,您可以使用https://www.googleapis.com/auth/drive.file.
作為重要的一點,范圍的官方檔案https://www.googleapis.com/auth/drive.file如下。
對應用程式創建或打開的檔案的按檔案訪問。檔案授權是基于每個用戶授予的,并在用戶取消對應用程式的授權時被撤銷。
因此,當您想使用 的作用域從電子表格中檢索資料時https://www.googleapis.com/auth/drive.file,首先需要由作用域創建電子表格。在這個答案中,我想介紹以下流程。
- 將范圍設定
https://www.googleapis.com/auth/drive.file為 Google Apps 腳本專案。 - 創建一個新的電子表格。
- 從電子表格中檢索值。
用法:
1. 設定范圍。
請創建一個新的 Google Apps 腳本。從您的問題中,我了解到您使用的是獨立型別。為此,請將范圍設定https://www.googleapis.com/auth/drive.file為清單檔案。Ref請添加"oauthScopes": ["https://www.googleapis.com/auth/drive.file"]到appsscript.json. 這樣,可以使用特定范圍。
2. 創建一個新的電子表格。
在使用此腳本之前,請在高級 Google 服務中啟用 Sheets API。當您運行以下腳本時,會創建一個新的電子表格,您可以在日志中看到電子表格 ID。請復印身份證。此 ID 將在下一個腳本中使用。這樣,一個新的電子表格就由https://www.googleapis.com/auth/drive.file.
function createNewSpreadsheet() {
const id = Sheets.Spreadsheets.create({properties: {title: "sample"}}).spreadsheetId;
console.log(id)
}
- 當您嘗試從不是由此 Google Apps 腳本專案創建的現有電子表格中檢索值時,
Requested entity was not found.會發生錯誤。因此,在本節中,此 Google Apps 腳本專案將創建一個新的電子表格。
3. 從電子表格中獲取值。
在使用此腳本之前,請打開創建的電子表格并檢查作業表名稱。并且,作為示例,請將示例值放入單元格中。當您運行以下腳本時,將從電子表格中檢索值,您可以在日志中看到它們。
function getValues() {
const spreadsheetId = "###"; // Please set the spreadsheet ID.
const obj = Sheets.Spreadsheets.Values.get(spreadsheetId, "Sheet1");
const values = obj.values;
console.log(values)
}
參考:
- 清單結構
- 方法:電子表格.create
- 方法:電子表格.values.get
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/327409.html
