我使用Google App腳本和Google Spreadsheet onOpen()觸發器。我在Google電子表格中鎖定了登錄用戶。Google應用腳本的Session.getActiveUser()不適用於跨域用戶
同樣的限制是它沒有記錄我在論壇上找到的跨域的電子郵件ID。
下面是相同的代碼:)從的OnOpen
function onOpen(e)
{
try
{
var ui = SpreadsheetApp.getUi();
ui.createMenu('Action')
.addItem('Add Data', 'addData')
.addToUi()
var sheet =SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Login Details");
sheet.appendRow([Session.getActiveUser().getEmail(),new Date()]);
}
catch(e)
{
Logger.log(e);
}
}
一次觀測(功能:
1]我的電子表格的所有者,它只是記錄我們的公司域名的電子郵件ID 。 (電子表格的自動onOpen())
2]從其他域打開電子表格的有界腳本並運行onOpen()時,它會記錄登錄的用戶。
背後的原因是什麼,是否有任何解決方法爲用戶在跨域?
你什麼意思「沒有登錄,我在論壇上找到跨域電子郵件ID」,論壇都有些什麼?並且在第二次觀察中,您說它記錄了登錄用戶,那麼問題是什麼?它記錄或不記錄電子郵件ID?是的,它只會提取登錄用戶。如果您想讓授權給腳本的用戶使用getEffectiveUser()。請解釋我提到的以上幾點。 –
@ShyamKansagra:在StackOverflow和[鏈接](https://developers.google.com/apps-script/reference/base/session#getActiveUser())。假設我的域名是abc.com,而客戶域名是xyz.com,那麼功能在abc.com上正常工作。意思是當我用[email protected]登錄時,它會在「登錄詳情」工作表中記錄用戶名。但是,如果我用[email protected]登錄,那麼我會得到空白的用戶名。按照第二種觀察,當我用[email protected]登錄並打開腳本編輯器並運行onOpen時,它將電子郵件ID記錄爲[email protected],但是當直接打開電子表格時它不會。 –
可能是因爲你一定忘記在[email protected]com上設置觸發器....請檢查一下,如果你已經在你的域中爲onOpen()設置了觸發器,那麼類似地,你也必須在客戶端ID上設置觸發器,觸發器不要使用代碼複製。 –