REST API/API見本/詳細

Last-modified: 2024-02-27 (火) 08:42:49

概要

今日が何曜日かを表示します。
更新は毎日深夜の0時~1時の間に入ります。
GoogleSpreadsheetに曜日別にwikiコードを書いており、その記載内容をGASで取得してwikiを編集しています。

コード(GAS)

SheetID,WikiID,WikiPage,APIKyeID,Secretはそれぞれ適切なものを設定してください。
任意の時間で時間主導型のトリガーを設定してください。

// 今日の曜日を取得します
function getDay() {
  const day = new Date().getDay();
  const dayNum = (day + 1);
  const daywithA = "A" + dayNum;
 
  return daywithA;
}
 
// GoogleSpreadsheetから内容を取得します
function getCode() {
  const daywithA = getDay();
  const ss = SpreadsheetApp.openById('SheetID');
  const sheet = ss.getSheetByName('シート1');
  const contents = sheet.getRange(daywithA).getValue();
 
  return contents;
}
 
// ページに書き込む内容を設定します
function setCode() {
  const contents =getCode();
  const pageContents = contents;
 
  return pageContents;
}
 
// WikiのIDを設定します
const wikiID = 'WikiID';
 
// 対象となるWikiのページ名を設定します
const wikiPage = 'WikiPage';
 
// 認証情報を設定します
const authInfo = {
  "api_key_id": "APIKeyID",
  "secret": "Secret"
};
 
// 認証トークンを取得します
function getAuthToken() {
  const url = `https://api.wikiwiki.jp/${wikiID}/auth`;
  const options = {
    'method': 'post',
    'contentType': 'application/json',
    'payload': JSON.stringify(authInfo)
  };
  const response = UrlFetchApp.fetch(url, options);
  const data = JSON.parse(response.getContentText('UTF-8'));
 
  if (data.status !== 'ok') {
    throw new Error('認証に失敗しました');
  }
 
  return data.token;
}
 
// ページに内容を書き込みます
function writePage(pageName, source, token) {
  const url = `https://api.wikiwiki.jp/${wikiID}/page/${pageName}`;
  const options = {
    'method': 'put',
    'contentType': 'application/json',
    'headers': { 'Authorization': `Bearer ${token}` },
    'payload': JSON.stringify({
      'source': source
    })
  };
 
  const response = UrlFetchApp.fetch(url, options);
  const data = JSON.parse(response.getContentText('UTF-8'));
 
  if (data.status !== 'ok') {
    throw new Error('書き込みに失敗しました');
  }
}
 
// スクリプトを実行します
function runScript () {
  const pageContents = setCode();
  try {
    const token = getAuthToken();
    writePage(wikiPage, pageContents, token);
    console.log('sucess');
  } catch (e) {
    console.error(e);
  }
}

GoogleSheets