我在googlescript中有一个表单,我可以将用户添加到工作表中。 有没有办法在该代码中实现一些行,以便脚本在wordpress页面上添加帖子? 我通过wp_insert_post读到了它是可能的,但我不知道在我的情况下它是如何工作的。
编辑: 正如斯宾塞建议我尝试通过WP REST API来做到这一点。
以下代码似乎正在运作.............
function httpPostTemplate() {
// URL for target web API
var url = 'http://example.de/wp-json/wp/v2/posts';
// For POST method, API parameters will be sent in the
// HTTP message payload.
// Start with an object containing name / value tuples.
var apiParams = {
// Relevant parameters would go here
'param1' : 'value1',
'param2' : 'value2' // etc.
};
// All 'application/json' content goes as a JSON string.
var payload = JSON.stringify(apiParams);
// Construct `fetch` params object
var params = {
'method': 'POST',
'contentType': 'application/json',
'payload': payload,
'muteHttpExceptions' : true
};
var response = UrlFetchApp.fetch(url, params)
// Check return code embedded in response.
var rc = response.getResponseCode();
var responseText = response.getContentText();
if (rc !== 200) {
// Log HTTP Error
Logger.log("Response (%s) %s",
rc,
responseText );
// Could throw an exception yourself, if appropriate
}
else {
// Successful POST, handle response normally
Logger.log( responseText );
}
}
但我收到错误:
[16-09-28 21:24:29:475 CEST]回复(401.0) {"代码":" rest_cannot_create","消息":"抱歉,您不被允许 创建新帖子。","数据":{" status":401}}
意思是:我必须先验证。 我安装了插件:WP REST API - OAuth 1.0a Server 我设置了一个新用户,并获得了一个客户端密钥和客户端用户。 但是从这里我不知道该怎么做:/
答案 0 :(得分:0)
有可能。 Wordpress有一个REST API。我可以在:
找到您将使用UrlFetchApp服务访问此API。文档可在以下网址找到:
https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app
阅读文档并尝试编写一些代码。你在这里遇到让你感到困惑的代码时会遇到困难,我会更新这个答案。
答案 1 :(得分:0)
我安装了WP REST API和OAuth插件。 在文档中写道:
启用WP API并激活OAuth服务器插件后 服务器,你需要创建一个“客户端”。这是一个标识符 应用程序,并包括“密钥”和“秘密”,两者都需要 链接到您的网站。
我无法找到如何设置客户端?
根据WP API我的GoogleScriptCode中出现错误:
{"code":"rest_cannot_create","message":"Sorry, you are not allowed to create new posts.","data":{"status":401}}
编辑:我找到了 - 它在用户/应用程序下 我会试着找出来并稍后再回复你。
答案 2 :(得分:0)
您应该在标题中添加身份验证:
var headers = {
... ,
'Authorization' : 'Basic ' + Utilities.base64Encode('USERNAME:PASSWORD'),
};
然后在您的参数中添加标题:
var params = {
'method': 'POST',
'headers': headers,
'payload': JSON.stringify(payload),
'muteHttpExceptions': true
}
然后使用UrlfetchApp.fetch
var response = UrlFetchApp.fetch("https://.../wp-json/wp/v2/posts/", params)
Logger.log(response);