Google スプレッドシート: シート追加 (Google Sheets: Add New Sheet)
Google スプレッドシートに新しいシートを追加します。
Configs:共通設定
  • 工程名
  • メモ
Configs
  • C1: OAuth2 設定 *
  • C2: スプレッドシートの ID *
  • C3: 新しいシートのタイトル (空白の場合、自動設定されます)#{EL}
  • C4: 追加したシートのタイトルを保存するデータ項目

Notes

  • スプレッドシート ID は、URL に含まれています。https://docs.google.com/spreadsheets/d/{スプレッドシート ID}/edit#gid=0

Capture

Appendix

  • google-sheets-sheet-add.xml (C) Questetra, Inc. (MIT License)
    • Professional をご利用であればファイルの内容を改変することでオリジナルのアドオンとして活用できます
Script (click to open)

// OAuth2 config
// Authorization Endpoint URL: https://accounts.google.com/o/oauth2/auth?access_type=offline&approval_prompt=force
// Token Endpoint URL: https://accounts.google.com/o/oauth2/token
// Scope: https://www.googleapis.com/auth/spreadsheets
// Consumer Key: (Get by Google Developers Console)
// Consumer Secret: (Get by Google Developers Console)

main();
function main(){
  //// == 工程コンフィグの参照 / Config Retrieving ==
  const oauth2 = configs.get("conf_OAuth2");
  const spreadSheetId = retrieveSpreadSheetId();
  const sheetTitle = configs.get("conf_SheetTitle");
  const addedSheetTitleDef = configs.getObject("conf_AddedSheetTitle");

  //// == Calculating / 演算 ==
  const addedSheetTitle = addSheet(oauth2, spreadSheetId, sheetTitle);

  //// == ワークフローデータへの代入 / Data Updating ==
  if (addedSheetTitleDef !== null) {
    engine.setData(addedSheetTitleDef, addedSheetTitle);
  }
}

/**
 * config からスプレッドシートの ID を読み出す
 * @return {String} spreadSheetId スプレッドシートの ID
 */
function retrieveSpreadSheetId() {
  let spreadSheetId = configs.get("conf_SheetId");
  const spreadSheetIdDef = configs.getObject("conf_SheetId");
  if (spreadSheetIdDef !== null) {
    spreadSheetId = engine.findData(spreadSheetIdDef);
  }
  if (spreadSheetId === null || spreadSheetId === "") {
    throw "Target Spreadsheet ID isn't set.";
  }
  return spreadSheetId;
}

/**
 * Google スプレッドシートに新しいシートを追加
 * @param {String} oauth2 OAuth2 認証設定
 * @param {String} spreadSheetId スプレッドシートの ID
 * @param {String} sheetTitle シートのタイトル
 * @return {String} addedSheetTitle 追加したシートのタイトル
 */
function addSheet(oauth2, spreadSheetId, sheetTitle) {
  // Method: spreadsheets.batchUpdate
  const uri = `https://sheets.googleapis.com/v4/spreadsheets/${encodeURIComponent(spreadSheetId)}:batchUpdate`;

  const requestObj = {
    requests: [
      { "addSheet": {} }
    ]
  };
  if (sheetTitle !== "" && sheetTitle !== null) {
    requestObj.requests[0].addSheet["properties"] = {
      "title": sheetTitle
    };
  }
  
  const response = httpClient.begin()
    .authSetting(oauth2)
    .body(JSON.stringify(requestObj), "application/json")
    .post(uri);
  
  const status = response.getStatusCode();
  const responseStr = response.getResponseAsString();
  if (status >= 300) {
    engine.log(`Status: ${status}`);
    engine.log(responseStr);
    throw "Failed to add a new sheet.";
  }

  // レスポンスから追加したシートのタイトルを取得して返す
  const {replies} = JSON.parse(responseStr);
  return replies[0].addSheet.properties.title;
}
%d人のブロガーが「いいね」をつけました。