2016-12-07 82 views
1

我想让Google Apps脚本Web应用程序从我的Wordpress中捕获当前用户名。 我一直在这一段时间工作,但我无法弄清楚。 我尝试了这种方式 - 里面的wp我运行代码:AppsScript和Wordpress之间的沟通

<?php $current_user = wp_get_current_user(); echo '<div id="username" style="visibility: hidden;">' . $current_user->user_login . '</div>'; ?> 

现在我想抓住从谷歌Web应用程序的ID的内容(在iframe),但我不能访问的父元素。我如何在两者之间进行沟通?

+0

请阅读SO文档并提供与您的谷歌Apps脚本代码的完整可重复的例子。其次,我认为由于GAS中的iframe限制,您将无法访问父元素。由安全功能通过设计。 –

+0

下次会这样做。 – dirtybob

回答

2

您可以将值发送到iframed webapp作为参数。

主页:

<?php $current_user = wp_get_current_user(); echo '<iframe src="https://script.google.com/macros/s/.../exec?name=' . $current_user->user_login . '"></iframe>'; ?> 

Google Apps脚本:

function doGet(e) { 
    var temp = HtmlService.createTemplateFromFile('index'); 
    temp.name = e.parameters.name; 
    return temp.evaluate().setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL); 
} 
+0

非常感谢你这个好主意!我试过了,但无法弄清楚如何获取用户名? 我在浏览器中上传了创建的iframe的控制台图片: http://fs5.directupload.net/images/161207/o3wtg4j3.png – dirtybob

+0

在Apps Script事件对象被传递给onGet()/ onPost()函数。公约将其命名为'e'。在我的示例中,我将该名称分配给模板对象,但您可以轻松地执行诸如'var name = e.parameters.name'之类的操作,并将name参数分配给一个变量。 –

+0

'function doGet(e){var_html = temp.name = e.parameters.name; return temp.evaluate()。setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL); } 函数Datentransfer(){ var logInName = doGet(); var ss = SpreadsheetApp.openById('ID'); var sss = ss.getSheetByName('Sheet1'); var email = Session.getActiveUser()。getEmail(); sss.getRange(sss.getLastRow()+ 1,1,1,2).setValues([[logInName,email]]); }' 在控制台中给我一个错误: '“无法从未定义的属性读取参数”' – dirtybob