note の記事をWPへ移管
結論から言うと移管は難しくて無理でした。
なので今回はnoteの記事一覧から取得してきたタイトル、投稿日時、抜粋、アイキャッチを、WP記事一覧ページ上に並べ、クリックするとnoteの記事詳細ページに飛ぶと言う仕組みにしました。今後はWPで投稿する予定なので一覧ページをシームレスにするために、noteから取得したデータをcontentのない記事としてWP投稿し並べたいと思います。
noteの記事一覧APIをGASで叩く
noteのクリエイター記事一覧ページのjsonデータは
https://note.com/api/v2/creators/${username}/contents?kind=note&page=1
で取得(usernameにクリエイターIDを入れる)。
function myFunction() {
const sheet = SpreadsheetApp.getActiveSheet();
const userName = 'hoge'; // クリエイターID
const maxPage = 15; // あらかじめ確認
const baseUrl = 'https://note.com/api/v2/creators/' + userName + '/contents?kind=note&page=';
let count = 2;
for( let i = 1; i <= maxPage; i++ ) {
const url = baseUrl + i;
const jsonData = UrlFetchApp.fetch(url);
const dataObject = JSON.parse(jsonData);
const contents = dataObject.data.contents;
const contentsLength = contents.length;
const keys = Object.keys(contents[0]);
const keysLength = keys.length;
if( i == 1 ) { // テーブルのヘッドをセット
for( let i = 0; i < keysLength; i++) {
let cell = sheet.getRange(1, 1 + i);
cell.setValue(keys[i]);
}
}
for( let i = 0; i < contentsLength; i++ ) { // コンテンツの塊を回す
let content = contents[i];
for( let j = 0; j < keysLength; j++) { // 1コンテンツの中身を回す
const range = sheet.getRange( i + count, 1 + j);
const key = keys[j];
range.setValue(content[key]);
}
}
count = count + contentsLength;
}
}
1つの記事には以下52の情報入ってました。
id
type
status
name
description
likeCount
price
key
slug
publishAt
thumbnailExternalUrl
eyecatch
user
canRead
isAuthor
externalUrl
customDomain
body
separator
isLimited
isTrial
canUpdate
tweetText
isRefund
commentCount
likes
anonymousLikeCount
isLiked
disableComment
hashtags
twitterShareUrl
facebookShareUrl
lineShareUrl
audio
pictures
limitedMessage
labels
priorSale
canMultipleLimitedNote
isPinned
pinnedUserNoteId
spEyecatch
enableBacktoDraft
notificationMessages
isProfiled
isForWork
isCircleDescription
noteDraft
noteUrl
imageCount
format
WordPressへ一括アップロード
今回はこのデータから「タイトル」「抜粋」「投稿日時」「アイキャッチ画像URL」だけを取り出して、WPのカスタム投稿「note記事」として一括アップロードします。
使用したプラグイン
GASでセットした表データをそのままCSVとして出力し、WP All Import > New import からアップロード。
どのフィールドに、CSVデータのどの項目を使うかを問われるので、ドラッグ&ドロップで指定。
カスタムフィールドと画像は、課金してProにしないと使えないらしく。
無理矢理contentのフィールドに、noteアイキャッチ画像URLを入れ、あとはtitle, excerpt, date, slug をその通りにセット。
インポートは10秒くらいで完了しました。
今回は記事をクリックしたらnoteの記事詳細に飛べばいいので、
新着記事一覧ページのループで、post type が note の時という条件分岐で、煮たり焼いたりしてうまく表示させました。
終わり。